summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorleo2000-07-17 00:27:36 +0000
committerleo2000-07-17 00:27:36 +0000
commit3710d6168415f9a8959a5ab737ab56d15a699b94 (patch)
treeb11f0f2d2c1cdb96269b12313295748448aeddc3
parent97eef4de5a5e841cabbacd5adc15307abd0eeaf9 (diff)
Misc changes
git-svn-id: http://svn.leocad.org/trunk@90 c7d43263-9d01-0410-8a33-9dba5d9f93d6
-rw-r--r--linux/.cvsignore1
-rw-r--r--linux/dialogs.cpp255
-rw-r--r--linux/dialogs.h1
-rw-r--r--linux/gdkgl.c41
-rw-r--r--linux/main.cpp254
-rw-r--r--linux/main.h32
-rw-r--r--linux/module.mk5
-rw-r--r--linux/system.cpp543
-rw-r--r--linux/toolbar.cpp15
9 files changed, 891 insertions, 256 deletions
diff --git a/linux/.cvsignore b/linux/.cvsignore
new file mode 100644
index 0000000..36de49a
--- /dev/null
+++ b/linux/.cvsignore
@@ -0,0 +1 @@
+*.d \ No newline at end of file
diff --git a/linux/dialogs.cpp b/linux/dialogs.cpp
index 591cab6..4561572 100644
--- a/linux/dialogs.cpp
+++ b/linux/dialogs.cpp
@@ -10,7 +10,8 @@
#include <string.h>
#include <unistd.h>
#include <pwd.h>
-#include <GL/gl.h>
+#include "opengl.h"
+#include "gtkmisc.h"
#include "gtktools.h"
#include "system.h"
#include "dialogs.h"
@@ -19,6 +20,37 @@
#include "piece.h"
#include "group.h"
+// =============================================================================
+// Modal dialog functions
+
+void dialog_button_callback (GtkWidget *widget, gpointer data)
+{
+ GtkWidget *parent;
+ int *loop, *ret;
+
+ parent = gtk_widget_get_toplevel (widget);
+ loop = (int*)gtk_object_get_data (GTK_OBJECT (parent), "loop");
+ ret = (int*)gtk_object_get_data (GTK_OBJECT (parent), "ret");
+
+ *loop = 0;
+ *ret = (int)data;
+}
+
+gint dialog_delete_callback (GtkWidget *widget, GdkEvent* event, gpointer data)
+{
+ int *loop;
+
+ gtk_widget_hide (widget);
+ loop = (int*)gtk_object_get_data (GTK_OBJECT (widget), "loop");
+ *loop = 0;
+
+ return TRUE;
+}
+
+
+
+
+// TODO: remove old functions and replace with the above ones
static int def_ret = 0;
static int* cur_ret = NULL;
@@ -106,7 +138,7 @@ static void write_int(GtkWidget* widget, int value)
gtk_entry_set_text (GTK_ENTRY (widget), buf);
}
-// Message box
+// Message box (TODO: use the one in system.cpp)
int msgbox_execute(char* text, int flags)
{
@@ -906,15 +938,15 @@ static void imageoptsdlg_ok(GtkWidget *widget, gpointer data)
if (s->from_htmldlg)
{
- SystemSetProfileInt("Default", "HTML Options", image);
- SystemSetProfileInt("Default", "HTML Width", opts->width);
- SystemSetProfileInt("Default", "HTML Height", opts->height);
+ Sys_ProfileSaveInt ("Default", "HTML Options", image);
+ Sys_ProfileSaveInt ("Default", "HTML Width", opts->width);
+ Sys_ProfileSaveInt ("Default", "HTML Height", opts->height);
}
else
{
- SystemSetProfileInt("Default", "Image Options", image);
- SystemSetProfileInt("Default", "Image Width", opts->width);
- SystemSetProfileInt("Default", "Image Height", opts->height);
+ Sys_ProfileSaveInt ("Default", "Image Options", image);
+ Sys_ProfileSaveInt ("Default", "Image Width", opts->width);
+ Sys_ProfileSaveInt ("Default", "Image Height", opts->height);
}
*cur_ret = LC_OK;
@@ -2425,7 +2457,214 @@ int groupdlg_execute(void* param)
return dlg_domodal(dlg, LC_CANCEL);
}
+// =============================================================================
+// Piece Library Dialog
+
+#if 0
+#include "library.h"
+#include "pieceinf.h"
+
+static void librarydlg_treefocus (GtkCTree *ctree, GtkCTreeNode *row, gint column, gpointer data)
+{
+ LibraryDialog *dlg = (LibraryDialog*)data;
+ dlg->SetCurrentGroup (GTK_CLIST (ctree)->focus_row - 1);
+}
+
+static void librarydlg_command (GtkWidget *widget, gpointer data)
+{
+ GtkWidget *parent = gtk_widget_get_toplevel (widget);
+ LibraryDialog *dlg = (LibraryDialog*) gtk_object_get_data (GTK_OBJECT (parent), "lib");
+ int id = GPOINTER_TO_INT (data);
+
+ dlg->HandleCommand (id);
+}
+
+static void librarydlg_update_list (LC_LIBDLG_PIECEINFO *piece_info, int count, int group, void *data)
+{
+ GtkCList *clist = GTK_CLIST (data);
+ unsigned long flag = 1 << group;
+ int i, row;
+
+ gtk_clist_freeze (clist);
+ gtk_clist_clear (clist);
+
+ for (i = 0; i < count; i++)
+ if ((group == -1) || ((flag & piece_info[i].current_groups) != 0))
+ {
+ char *text = piece_info[i].info->m_strDescription;
+ row = gtk_clist_append (clist, &text);
+ gtk_clist_set_row_data (clist, row, GINT_TO_POINTER (i));
+ }
+
+ gtk_clist_thaw (clist);
+ clist->focus_row = 0;
+ gtk_clist_select_row (clist, 0, 0);
+}
+
+static void librarydlg_update_tree (int num_groups, char str_groups[][LC_LIBDLG_MAXNAME+1], void *data)
+{
+ GtkCTree *ctree = GTK_CTREE (data);
+ GtkCTreeNode *parent;
+ char *text = "Groups";
+
+ gtk_clist_freeze (GTK_CLIST (ctree));
+ gtk_clist_clear (GTK_CLIST (ctree));
+
+ parent = gtk_ctree_insert_node (ctree, NULL, NULL, &text, 0, NULL, NULL, NULL, NULL, FALSE, TRUE);
+
+ for (int i = 0; i < num_groups; i++)
+ {
+ text = str_groups[i];
+ gtk_ctree_insert_node (ctree, parent, NULL, &text, 0, NULL, NULL, NULL, NULL, TRUE, TRUE);
+ }
+
+ gtk_clist_thaw (GTK_CLIST (ctree));
+}
+
+int librarydlg_execute (void *param)
+{
+ GtkWidget *dlg, *vbox, *clist, *scr, *ctree, *hsplit, *item, *menu, *menubar, *handle;
+ GtkAccelGroup *accel, *menu_accel;
+ int loop = 1, ret = LC_CANCEL;
+ LibraryDialog lib;
+
+ dlg = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title (GTK_WINDOW (dlg), "Piece Library Manager");
+ gtk_signal_connect (GTK_OBJECT (dlg), "delete_event",
+ GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (dlg), "destroy",
+ GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
+ gtk_object_set_data (GTK_OBJECT (dlg), "loop", &loop);
+ gtk_object_set_data (GTK_OBJECT (dlg), "ret", &ret);
+ gtk_window_set_default_size (GTK_WINDOW (dlg), 500, 250);
+ accel = gtk_accel_group_get_default ();
+
+ vbox = gtk_vbox_new (FALSE, 5);
+ gtk_widget_show (vbox);
+ gtk_container_add (GTK_CONTAINER (dlg), vbox);
+
+ handle = gtk_handle_box_new ();
+ gtk_box_pack_start (GTK_BOX (vbox), handle, FALSE, FALSE, 0);
+ gtk_widget_show (handle);
+
+ menubar = gtk_menu_bar_new ();
+ gtk_container_add (GTK_CONTAINER (handle), menubar);
+ gtk_widget_show (menubar);
+ /*
+ // File menu
+ menu = create_sub_menu (menubar, "_File", accel, &menu_accel);
+ menu_tearoff (menu);
+
+ create_menu_item (menu, "_Reset", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_FILE_RESET);
+ create_menu_item (menu, "_Open...", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_FILE_OPEN);
+ create_menu_item (menu, "_Save", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_FILE_SAVE);
+ create_menu_item (menu, "Save _As...", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_FILE_SAVEAS);
+ menu_separator (menu);
+ item = create_menu_item (menu, "_Print Catalog...", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_FILE_PRINTCATALOG);
+ gtk_widget_set_sensitive (item, FALSE);
+ item = create_menu_item (menu, "Load _Update...", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_FILE_MERGEUPDATE);
+ item = create_menu_item (menu, "_Import Piece...", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_FILE_IMPORTPIECE);
+ menu_separator (menu);
+ item = create_menu_item (menu, "Re_turn", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_FILE_RETURN);
+ item = create_menu_item (menu, "_Cancel", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_FILE_CANCEL);
+
+ // Group menu
+ menu = create_sub_menu (menubar, "_Group", accel, &menu_accel);
+ menu_tearoff (menu);
+
+ create_menu_item (menu, "Insert...", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_GROUP_INSERT);
+ create_menu_item (menu, "Delete", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_GROUP_DELETE);
+ create_menu_item (menu, "Edit...", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_GROUP_EDIT);
+ menu_separator (menu);
+ create_menu_item (menu, "Move Up", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_GROUP_MOVEUP);
+ create_menu_item (menu, "Move Down", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_GROUP_MOVEDOWN);
+
+ // Piece menu
+ menu = create_sub_menu (menubar, "_Piece", accel, &menu_accel);
+ menu_tearoff (menu);
+
+ item = create_menu_item (menu, "_New", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_PIECE_NEW);
+ gtk_widget_set_sensitive (item, FALSE);
+ item = create_menu_item (menu, "_Edit", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_PIECE_EDIT);
+ gtk_widget_set_sensitive (item, FALSE);
+ create_menu_item (menu, "_Delete", menu_accel,
+ GTK_SIGNAL_FUNC (librarydlg_command), LC_LIBDLG_PIECE_DELETE);
+ */
+ hsplit = gtk_hpaned_new ();
+ gtk_paned_set_gutter_size (GTK_PANED (hsplit), 12);
+ gtk_box_pack_start (GTK_BOX (vbox), hsplit, TRUE, TRUE, 0);
+ gtk_widget_show (hsplit);
+ gtk_container_set_border_width (GTK_CONTAINER (hsplit), 5);
+
+ ctree = gtk_ctree_new (1, 0);
+ gtk_object_set_data (GTK_OBJECT (dlg), "ctree", ctree);
+ gtk_widget_show (ctree);
+ gtk_paned_add1 (GTK_PANED (hsplit), ctree);
+ gtk_clist_column_titles_hide (GTK_CLIST (ctree));
+ gtk_clist_set_selection_mode (GTK_CLIST (ctree), GTK_SELECTION_BROWSE);
+ gtk_signal_connect (GTK_OBJECT (ctree), "tree_select_row",
+ GTK_SIGNAL_FUNC (librarydlg_treefocus), &lib);
+ gtk_widget_set_usize (ctree, -1, 200);
+
+ scr = gtk_scrolled_window_new ((GtkAdjustment*)NULL, (GtkAdjustment*)NULL);
+ gtk_widget_show (scr);
+ gtk_paned_add2 (GTK_PANED (hsplit), scr);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scr), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
+
+ clist = gtk_clist_new (1);
+ gtk_widget_show (clist);
+ gtk_clist_set_selection_mode (GTK_CLIST (clist), GTK_SELECTION_BROWSE);
+ gtk_clist_set_auto_sort (GTK_CLIST (clist), TRUE);
+ gtk_container_add (GTK_CONTAINER (scr), clist);
+ gtk_clist_column_titles_hide (GTK_CLIST (clist));
+ gtk_paned_set_position (GTK_PANED (hsplit), 150);
+
+ // Initialize
+ gtk_object_set_data (GTK_OBJECT (dlg), "lib", &lib);
+ lib.SetListFunc (librarydlg_update_list, clist);
+ lib.SetTreeFunc (librarydlg_update_tree, ctree);
+ lib.Initialize ();
+
+
+ gtk_grab_add (dlg);
+ gtk_widget_show (dlg);
+
+ while (loop)
+ gtk_main_iteration ();
+ if (ret == LC_OK)
+ {
+ }
+ gtk_grab_remove (dlg);
+ gtk_widget_destroy (dlg);
+
+ return ret;
+}
+
+#else
+
+int librarydlg_execute (void *param)
+{
+ // TODO: FIXME !
+ return 0;
+}
+#endif
diff --git a/linux/dialogs.h b/linux/dialogs.h
index 04e28a2..9fb6e04 100644
--- a/linux/dialogs.h
+++ b/linux/dialogs.h
@@ -20,6 +20,7 @@ int propertiesdlg_execute(void* param);
int groupeditdlg_execute(void* param);
int groupdlg_execute(void* param);
int minifigdlg_execute(void* param);
+int librarydlg_execute(void* param);
#endif // _DIALOGS_H_
diff --git a/linux/gdkgl.c b/linux/gdkgl.c
index 3d326a5..6d082fc 100644
--- a/linux/gdkgl.c
+++ b/linux/gdkgl.c
@@ -27,10 +27,8 @@ extern "C" {
}
#endif /* __cplusplus */
-#include <GL/gl.h>
-#include <GL/glx.h>
#include <string.h>
-
+#include "opengl.h"
static XVisualInfo *get_xvisualinfo(GdkVisual *visual)
{
@@ -63,10 +61,9 @@ struct _GdkGLContextPrivate {
typedef struct _GdkGLContextPrivate GdkGLContextPrivate;
-
gint gdk_gl_query(void)
{
- return (glXQueryExtension(GDK_DISPLAY(),NULL,NULL) == True) ? TRUE : FALSE;
+ return (pfnglXQueryExtension(GDK_DISPLAY(),NULL,NULL) == True) ? TRUE : FALSE;
}
GdkVisual *gdk_gl_choose_visual(int *attrList)
@@ -79,7 +76,7 @@ GdkVisual *gdk_gl_choose_visual(int *attrList)
dpy = GDK_DISPLAY();
/* TODO: translate GDK_GL_ to GLX_ */
- if ((vi = glXChooseVisual(dpy,DefaultScreen(dpy), attrList)) == NULL) {
+ if ((vi = pfnglXChooseVisual(dpy,DefaultScreen(dpy), attrList)) == NULL) {
return NULL;
}
visual = gdkx_visual_get(vi->visualid);
@@ -101,7 +98,7 @@ int gdk_gl_get_config(GdkVisual *visual, int attrib)
vi = get_xvisualinfo(visual);
/* TODO: translate GDK_GL_ to GLX_ */
- if (glXGetConfig(dpy, vi, attrib, &value) == 0) {
+ if (pfnglXGetConfig(dpy, vi, attrib, &value) == 0) {
XFree(vi);
return value;
}
@@ -129,9 +126,9 @@ GdkGLContext *gdk_gl_context_share_new(GdkVisual *visual, GdkGLContext *sharelis
vi = get_xvisualinfo(visual);
if (sharelist) {
- glxcontext = glXCreateContext(dpy, vi, ((GdkGLContextPrivate*)sharelist)->glxcontext, direct ? True : False);
+ glxcontext = pfnglXCreateContext(dpy, vi, ((GdkGLContextPrivate*)sharelist)->glxcontext, direct ? True : False);
} else {
- glxcontext = glXCreateContext(dpy, vi, 0, direct ? True : False);
+ glxcontext = pfnglXCreateContext(dpy, vi, 0, direct ? True : False);
}
XFree(vi);
if (glxcontext == NULL) {
@@ -165,9 +162,9 @@ void gdk_gl_context_unref(GdkGLContext *context)
if (contextprivate->ref_count > 1) {
contextprivate->ref_count -= 1;
} else {
- if (contextprivate->glxcontext == glXGetCurrentContext())
- glXMakeCurrent(contextprivate->xdisplay, None, NULL);
- glXDestroyContext(contextprivate->xdisplay, contextprivate->glxcontext);
+ if (contextprivate->glxcontext == pfnglXGetCurrentContext())
+ pfnglXMakeCurrent(contextprivate->xdisplay, None, NULL);
+ pfnglXDestroyContext(contextprivate->xdisplay, contextprivate->glxcontext);
memset(context, 0, sizeof(GdkGLContextPrivate));
g_free(context);
}
@@ -180,24 +177,24 @@ gint gdk_gl_make_current(GdkDrawable *drawable, GdkGLContext *context)
g_return_val_if_fail(drawable != NULL, FALSE);
g_return_val_if_fail(context != NULL, FALSE);
- return (glXMakeCurrent(contextprivate->xdisplay, GDK_WINDOW_XWINDOW(drawable), contextprivate->glxcontext) == True) ? TRUE : FALSE;
+ return (pfnglXMakeCurrent(contextprivate->xdisplay, GDK_WINDOW_XWINDOW(drawable), contextprivate->glxcontext) == True) ? TRUE : FALSE;
}
void gdk_gl_swap_buffers(GdkDrawable *drawable)
{
g_return_if_fail(drawable != NULL);
- glXSwapBuffers(GDK_WINDOW_XDISPLAY(drawable), GDK_WINDOW_XWINDOW(drawable));
+ pfnglXSwapBuffers(GDK_WINDOW_XDISPLAY(drawable), GDK_WINDOW_XWINDOW(drawable));
}
void gdk_gl_wait_gdk(void)
{
- glXWaitX();
+ pfnglXWaitX();
}
void gdk_gl_wait_gl (void)
{
- glXWaitGL();
+ pfnglXWaitGL();
}
@@ -233,7 +230,7 @@ GdkGLPixmap *gdk_gl_pixmap_new(GdkVisual *visual, GdkPixmap *pixmap)
vi = get_xvisualinfo(visual);
xpixmap = ((GdkPixmapPrivate*)pixmap)->xwindow;
- glxpixmap = glXCreateGLXPixmap(dpy, vi, xpixmap);
+ glxpixmap = pfnglXCreateGLXPixmap(dpy, vi, xpixmap);
XFree(vi);
g_return_val_if_fail(glxpixmap != None, NULL);
@@ -267,10 +264,10 @@ void gdk_gl_pixmap_unref(GdkGLPixmap *glpixmap)
if (contextprivate->ref_count > 1) {
contextprivate->ref_count -= 1;
} else {
- glXDestroyGLXPixmap(contextprivate->xdisplay, contextprivate->glxpixmap);
- glXWaitGL();
+ pfnglXDestroyGLXPixmap(contextprivate->xdisplay, contextprivate->glxpixmap);
+ pfnglXWaitGL();
gdk_pixmap_unref(contextprivate->front_left);
- glXWaitX();
+ pfnglXWaitX();
memset(glpixmap, 0, sizeof(GdkGLPixmapPrivate));
g_free(glpixmap);
}
@@ -289,13 +286,13 @@ gint gdk_gl_pixmap_make_current(GdkGLPixmap *glpixmap, GdkGLContext *context)
glxpixmap = ((GdkGLPixmapPrivate*)glpixmap)->glxpixmap;
glxcontext = ((GdkGLContextPrivate*)context)->glxcontext;
- return (glXMakeCurrent(dpy, glxpixmap, glxcontext) == True) ? TRUE : FALSE;
+ return (pfnglXMakeCurrent(dpy, glxpixmap, glxcontext) == True) ? TRUE : FALSE;
}
/* fonts */
void gdk_gl_use_gdk_font(GdkFont *font, int first, int count, int list_base)
{
g_return_if_fail(font != NULL);
- glXUseXFont(gdk_font_id(font), first, count, list_base);
+ pfnglXUseXFont(gdk_font_id(font), first, count, list_base);
}
diff --git a/linux/main.cpp b/linux/main.cpp
index 610f8a4..2655cb7 100644
--- a/linux/main.cpp
+++ b/linux/main.cpp
@@ -5,27 +5,96 @@
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include <GL/glx.h>
#include <stdlib.h>
#include <stdio.h>
+#include <pwd.h>
+#include <unistd.h>
+#include <string.h>
+#include "opengl.h"
#include "gtkglarea.h"
-#include "menu.h"
-#include "custom.h"
#include "project.h"
#include "toolbar.h"
#include "globals.h"
#include "main.h"
+void create_main_menu (GtkObject *window, GtkWidget *vbox);
+
// Variables
GtkWidget *main_window;
GtkWidget *drawing_area;
-static char default_path[] = "/usr/share/LeoCAD/";
+static char default_path[PATH_MAX];
bool ignore_commands = false;
+void init_paths (char *argv0)
+{
+ char temppath[PATH_MAX];
+ char *home;
+
+ home = getenv ("HOME");
+ if (home == NULL)
+ {
+ uid_t id = getuid();
+ struct passwd *pwd;
+
+ setpwent();
+ while ((pwd = getpwent()) != NULL)
+ if (pwd->pw_uid == id)
+ {
+ home = pwd->pw_dir;
+ break;
+ }
+ endpwent();
+ }
+
+ if (home == NULL)
+ home = ".";
+
+ strcpy (temppath, argv0);
+ if (!strrchr(temppath, '/'))
+ {
+ char *path;
+ char *last;
+ int found;
+
+ found = 0;
+ path = getenv("PATH");
+ do
+ {
+ temppath[0] = '\0';
+
+ last = strchr(path, ':');
+ if (!last)
+ last = path + strlen (path);
+
+ if (*path == '~')
+ {
+ strcpy(temppath, home);
+ ++path;
+ }
+
+ if (last > (path+1))
+ {
+ strncat(temppath, path, (last-path));
+ strcat(temppath, "/");
+ }
+ strcat (temppath, "./");
+ strcat (temppath, argv0);
+
+ if (access(temppath, X_OK) == 0 )
+ ++found;
+ path = last+1;
+
+ } while (*last && !found);
+ }
+ else
+ argv0 = strrchr(argv0, '/')+1;
+
+ if (realpath (temppath, default_path))
+ *(strrchr (default_path, '/')) = '\0';
+}
+
// Functions
void OnCommandDirect(GtkWidget *w, gpointer data)
@@ -80,6 +149,54 @@ void OnCommand(GtkWidget* widget, gpointer data)
case ID_SNAP_A: {
project->HandleCommand(LC_TOOLBAR_SNAPMENU, 5);
} break;
+
+ case ID_VIEW_TOOLBAR_STANDARD: {
+ if (GTK_WIDGET_VISIBLE (main_toolbar.handle_box))
+ gtk_widget_hide (main_toolbar.handle_box);
+ else
+ gtk_widget_show (main_toolbar.handle_box);
+ } break;
+
+ case ID_VIEW_TOOLBAR_DRAWING: {
+ if (GTK_WIDGET_VISIBLE (tool_toolbar.handle_box))
+ gtk_widget_hide (tool_toolbar.handle_box);
+ else
+ gtk_widget_show (tool_toolbar.handle_box);
+ } break;
+
+ case ID_VIEW_TOOLBAR_ANIMATION: {
+ if (GTK_WIDGET_VISIBLE (anim_toolbar.handle_box))
+ gtk_widget_hide (anim_toolbar.handle_box);
+ else
+ gtk_widget_show (anim_toolbar.handle_box);
+ } break;
+
+ case ID_VIEW_TOOLBAR_BOTH: {
+ gtk_toolbar_set_style (GTK_TOOLBAR (main_toolbar.toolbar), GTK_TOOLBAR_BOTH);
+ gtk_toolbar_set_style (GTK_TOOLBAR (tool_toolbar.toolbar), GTK_TOOLBAR_BOTH);
+ gtk_toolbar_set_style (GTK_TOOLBAR (anim_toolbar.toolbar), GTK_TOOLBAR_BOTH);
+ gtk_widget_set_usize (main_toolbar.handle_box, -1, -1);
+ gtk_widget_set_usize (tool_toolbar.handle_box, -1, -1);
+ gtk_widget_set_usize (anim_toolbar.handle_box, -1, -1);
+ } break;
+
+ case ID_VIEW_TOOLBAR_ICONS: {
+ gtk_toolbar_set_style (GTK_TOOLBAR (main_toolbar.toolbar), GTK_TOOLBAR_ICONS);
+ gtk_toolbar_set_style (GTK_TOOLBAR (tool_toolbar.toolbar), GTK_TOOLBAR_ICONS);
+ gtk_toolbar_set_style (GTK_TOOLBAR (anim_toolbar.toolbar), GTK_TOOLBAR_ICONS);
+ gtk_widget_set_usize (main_toolbar.handle_box, -1, -1);
+ gtk_widget_set_usize (tool_toolbar.handle_box, -1, -1);
+ gtk_widget_set_usize (anim_toolbar.handle_box, -1, -1);
+ } break;
+
+ case ID_VIEW_TOOLBAR_TEXT: {
+ gtk_toolbar_set_style (GTK_TOOLBAR (main_toolbar.toolbar), GTK_TOOLBAR_TEXT);
+ gtk_toolbar_set_style (GTK_TOOLBAR (tool_toolbar.toolbar), GTK_TOOLBAR_TEXT);
+ gtk_toolbar_set_style (GTK_TOOLBAR (anim_toolbar.toolbar), GTK_TOOLBAR_TEXT);
+ gtk_widget_set_usize (main_toolbar.handle_box, -1, -1);
+ gtk_widget_set_usize (tool_toolbar.handle_box, -1, -1);
+ gtk_widget_set_usize (anim_toolbar.handle_box, -1, -1);
+ } break;
}
}
@@ -89,12 +206,20 @@ static gint button_press_event (GtkWidget *widget, GdkEventButton *event)
x = (int)event->x;
y = widget->allocation.height - (int)event->y - 1;
- if (event->button == 1)
- project->OnLeftButtonDown(x, y, (event->state & GDK_CONTROL_MASK) != 0,
- (event->state & GDK_SHIFT_MASK) != 0);
- if (event->button == 3)
- project->OnRightButtonDown(x, y, (event->state & GDK_CONTROL_MASK) != 0,
- (event->state & GDK_SHIFT_MASK) != 0);
+ if (event->type == GDK_BUTTON_PRESS)
+ {
+ if (event->button == 1)
+ project->OnLeftButtonDown(x, y, (event->state & GDK_CONTROL_MASK) != 0,
+ (event->state & GDK_SHIFT_MASK) != 0);
+ if (event->button == 3)
+ project->OnRightButtonDown(x, y, (event->state & GDK_CONTROL_MASK) != 0,
+ (event->state & GDK_SHIFT_MASK) != 0);
+ }
+ else if (event->type == GDK_2BUTTON_PRESS)
+ {
+ project->OnLeftButtonDoubleClick(x, y, (event->state & GDK_CONTROL_MASK) != 0,
+ (event->state & GDK_SHIFT_MASK) != 0);
+ }
gtk_window_set_focus(GTK_WINDOW(main_window), drawing_area);
@@ -175,17 +300,12 @@ static gint key_press_event(GtkWidget* widget, GdkEventKey* event, gpointer data
return TRUE;
}
-static gint init(GtkWidget *widget)
+static gint init (GtkWidget *widget)
{
// OpenGL functions can be called only if make_current returns true
- if (gtk_gl_area_make_current(GTK_GL_AREA(widget)))
+ if (gtk_gl_area_make_current (GTK_GL_AREA (widget)))
{
- glViewport(0,0, widget->allocation.width, widget->allocation.height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluOrtho2D(0,100, 100,0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
+ GL_InitializeExtensions ();
}
return TRUE;
@@ -204,9 +324,9 @@ static gint draw_view(GtkWidget *widget, GdkEventExpose *event)
}
// Save the new size of the window.
-static gint reshape_view(GtkWidget *widget, GdkEventConfigure *event)
+static gint reshape_view(GtkWidget *widget, GtkAllocation *allocation, gpointer data)
{
- project->SetViewSize(widget->allocation.width, widget->allocation.height);
+ project->SetViewSize(allocation->width, allocation->height);
return TRUE;
}
@@ -225,20 +345,54 @@ static gint main_quit (GtkWidget *widget, GdkEvent* event, gpointer data)
int main(int argc, char* argv[])
{
- GtkWidget *vbox, *hbox;
+ GtkWidget *vbox, *hbox, *frame;
+ int attrlist[] = { GLX_RGBA, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, 16, 0 };
+ int i, j, k;
+ char* libgl = NULL;
+
+ // Parse and remove Linux arguments
+ for (i = 1; i < argc; i++)
+ {
+ char* param = argv[i];
+
+ if (param[0] == '-' && param[1] == '-')
+ {
+ param += 2;
+
+ if ((strcmp (param, "libgl") == 0) && (i != argc))
+ {
+ libgl = argv[i+1];
+ argv[i] = argv[i+1] = NULL;
+ i++;
+ }
+ }
+ }
- int attrlist[] =
+ for (i = 1; i < argc; i++)
{
- GLX_RGBA,
- GLX_DOUBLEBUFFER,
- GLX_DEPTH_SIZE, 16,
- 0
- };
+ for (k = i; k < argc; k++)
+ if (argv[k] != NULL)
+ break;
+
+ if (k > i)
+ {
+ k -= i;
+ for (j = i + k; j < argc; j++)
+ argv[j-k] = argv[j];
+ argc -= k;
+ }
+ }
+
+ init_paths (argv[0]);
gtk_set_locale ();
gtk_init (&argc, &argv);
+ atexit (GL_Shutdown);
// Check if OpenGL is supported.
+ if (!GL_Initialize (libgl))
+ return 1;
+
if (gdk_gl_query() == FALSE)
{
g_print("ERROR: OpenGL not supported\n");
@@ -246,7 +400,6 @@ int main(int argc, char* argv[])
}
// startup_message ("Loading user preferences ...");
- init_rc ();
project = new Project();
main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@@ -255,8 +408,6 @@ int main(int argc, char* argv[])
// gtk_window_set_policy (GTK_WINDOW (window), TRUE, TRUE, FALSE);
gtk_widget_realize (main_window);
// read preferences
- gtk_widget_set_usize (GTK_WIDGET(main_window), 400, 300);
- gdk_window_resize (main_window->window, 600, 400);
gtk_window_set_default_size (GTK_WINDOW (main_window), 600, 400);
gtk_signal_connect (GTK_OBJECT (main_window), "delete_event", (GtkSignalFunc) main_quit, NULL);
@@ -267,7 +418,7 @@ int main(int argc, char* argv[])
gtk_widget_show (vbox);
// startup_message ("Creating Main Menu ...");
- create_main_menu(main_window, vbox);
+ create_main_menu (GTK_OBJECT (main_window), vbox);
// startup_message ("Creating Toolbars ...");
create_toolbars (main_window, vbox);
@@ -284,7 +435,7 @@ int main(int argc, char* argv[])
for all your top level windows unless you are certain that they get
destroy signal by other means.
*/
- gtk_quit_add_destroy(1, GTK_OBJECT(main_window));
+ // gtk_quit_add_destroy(1, GTK_OBJECT(main_window));
// Create new OpenGL widget.
drawing_area = GTK_WIDGET(gtk_gl_area_new(attrlist));
@@ -302,7 +453,7 @@ int main(int argc, char* argv[])
// Connect signal handlers
gtk_signal_connect(GTK_OBJECT(drawing_area), "expose_event",
GTK_SIGNAL_FUNC(draw_view), NULL);
- gtk_signal_connect(GTK_OBJECT(drawing_area), "configure_event",
+ gtk_signal_connect(GTK_OBJECT(drawing_area), "size_allocate",//configure_event",
GTK_SIGNAL_FUNC(reshape_view), NULL);
gtk_signal_connect(GTK_OBJECT(drawing_area), "realize",
GTK_SIGNAL_FUNC(init), NULL);
@@ -315,10 +466,15 @@ int main(int argc, char* argv[])
gtk_signal_connect (GTK_OBJECT (drawing_area), "key_press_event",
GTK_SIGNAL_FUNC(key_press_event), NULL);
- /* set minimum size */
+ // set minimum size
gtk_widget_set_usize(GTK_WIDGET(drawing_area), 100,100);
- gtk_container_add(GTK_CONTAINER(hbox),GTK_WIDGET(drawing_area));
+ frame = gtk_frame_new ((char*)NULL);
+ gtk_widget_show (frame);
+ gtk_container_add (GTK_CONTAINER (hbox), frame);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
+
+ gtk_container_add (GTK_CONTAINER (frame), GTK_WIDGET(drawing_area));
gtk_widget_show(GTK_WIDGET(drawing_area));
create_piecebar(main_window, hbox);
@@ -328,6 +484,15 @@ int main(int argc, char* argv[])
//gtk_widget_show (statusbar);
//gtk_box_pack_start (GTK_BOX (vbox), statusbar, FALSE, TRUE, 0);
+#include "pixmaps/icon32.xpm"
+
+ GdkPixmap *gdkpixmap;
+ GdkBitmap *mask;
+
+ gdkpixmap = gdk_pixmap_create_from_xpm_d (main_window->window, &mask,
+ &main_window->style->bg[GTK_STATE_NORMAL], icon32);
+ gdk_window_set_icon (main_window->window, NULL, gdkpixmap, mask);
+
gtk_widget_show(GTK_WIDGET(main_window));
char* path;
@@ -338,22 +503,13 @@ int main(int argc, char* argv[])
if (project->Initialize(argc, argv, path) == false)
{
delete project;
- return 1;
+ // return 1;
+ _exit (1);
}
gtk_main();
// delete project;
+ _exit (0); // FIXME !
return 0;
}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/linux/main.h b/linux/main.h
index 4264f16..27b90ef 100644
--- a/linux/main.h
+++ b/linux/main.h
@@ -8,13 +8,31 @@ extern bool ignore_commands;
void OnCommand(GtkWidget *w, gpointer data);
void OnCommandDirect(GtkWidget *w, gpointer data);
-#define ID_FILE_RECENT1 1
-#define ID_FILE_RECENT2 2
-#define ID_FILE_RECENT3 3
-#define ID_FILE_RECENT4 4
-#define ID_FILE_EXIT 5
-#define ID_VIEW_VIEWPORTS_01 6
-#define ID_VIEW_VIEWPORTS_14 19
+#define ID_FILE_RECENT1 1
+#define ID_FILE_RECENT2 2
+#define ID_FILE_RECENT3 3
+#define ID_FILE_RECENT4 4
+#define ID_FILE_EXIT 5
+#define ID_VIEW_VIEWPORTS_01 6
+#define ID_VIEW_VIEWPORTS_02 7
+#define ID_VIEW_VIEWPORTS_03 8
+#define ID_VIEW_VIEWPORTS_04 9
+#define ID_VIEW_VIEWPORTS_05 10
+#define ID_VIEW_VIEWPORTS_06 11
+#define ID_VIEW_VIEWPORTS_07 12
+#define ID_VIEW_VIEWPORTS_08 13
+#define ID_VIEW_VIEWPORTS_09 14
+#define ID_VIEW_VIEWPORTS_10 15
+#define ID_VIEW_VIEWPORTS_11 16
+#define ID_VIEW_VIEWPORTS_12 17
+#define ID_VIEW_VIEWPORTS_13 18
+#define ID_VIEW_VIEWPORTS_14 19
+#define ID_VIEW_TOOLBAR_STANDARD 20
+#define ID_VIEW_TOOLBAR_DRAWING 21
+#define ID_VIEW_TOOLBAR_ANIMATION 22
+#define ID_VIEW_TOOLBAR_BOTH 23
+#define ID_VIEW_TOOLBAR_ICONS 24
+#define ID_VIEW_TOOLBAR_TEXT 25
#define ID_CAMERA_FIRST 1001
#define ID_CAMERA_LAST 1255
diff --git a/linux/module.mk b/linux/module.mk
index 65e8f0f..a77e169 100644
--- a/linux/module.mk
+++ b/linux/module.mk
@@ -1,7 +1,8 @@
-SRC += linux/custom.cpp linux/gdkgl.c linux/gtkglarea.c \
+SRC += linux/profile.cpp linux/gdkgl.c linux/gtkglarea.c \
linux/dialogs.cpp linux/dlgpiece.cpp linux/dlgfile.cpp \
linux/gtktools.cpp linux/main.cpp linux/menu.cpp \
- linux/system.cpp linux/toolbar.cpp
+ linux/system.cpp linux/toolbar.cpp linux/gtkmisc.cpp \
+ linux/linux_gl.cpp
CFLAGS += $(shell gtk-config --cflags)
CXXFLAGS += $(shell gtk-config --cflags)
diff --git a/linux/system.cpp b/linux/system.cpp
index fb38be1..9fc8124 100644
--- a/linux/system.cpp
+++ b/linux/system.cpp
@@ -1,19 +1,254 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <GL/glx.h>
+#include <gdk/gdkx.h>
#include <gtk/gtk.h>
+#include "opengl.h"
#include "gdkgl.h"
#include "gtkglarea.h"
+#include "gtkmisc.h"
#include "camera.h"
#include "project.h"
#include "system.h"
#include "main.h"
-#include "menu.h"
#include "toolbar.h"
#include "dialogs.h"
#include "globals.h"
+// =============================================================================
+// Cursor functions
+
+/*
+void Sys_BeginWait ()
+{
+ GdkCursor *cursor = gdk_cursor_new (GDK_WATCH);
+ gdk_window_set_cursor (g_pParentWnd->m_pWidget->window, cursor);
+ gdk_cursor_destroy (cursor);
+}
+
+void Sys_EndWait ()
+{
+ GdkCursor *cursor = gdk_cursor_new (GDK_LEFT_PTR);
+ gdk_window_set_cursor (g_pParentWnd->m_pWidget->window, cursor);
+ gdk_cursor_destroy (cursor);
+}
+
+void Sys_GetCursorPos (int *x, int *y)
+{
+ gdk_window_get_pointer (NULL, x, y, NULL);
+}
+
+void Sys_SetCursorPos (int x, int y)
+{
+ XWarpPointer (GDK_DISPLAY(), None, GDK_ROOT_WINDOW(), 0, 0, 0, 0, x, y);
+}
+*/
+
+// =============================================================================
+// Message Boxes
+
+static void dialog_button_callback (GtkWidget *widget, gpointer data)
+{
+ GtkWidget *parent;
+ int *loop, *ret;
+
+ parent = gtk_widget_get_toplevel (widget);
+ loop = (int*)gtk_object_get_data (GTK_OBJECT (parent), "loop");
+ ret = (int*)gtk_object_get_data (GTK_OBJECT (parent), "ret");
+
+ *loop = 0;
+ *ret = (int)data;
+}
+
+static gint dialog_delete_callback (GtkWidget *widget, GdkEvent* event, gpointer data)
+{
+ int *loop;
+
+ gtk_widget_hide (widget);
+ loop = (int*)gtk_object_get_data (GTK_OBJECT (widget), "loop");
+ *loop = 0;
+
+ return TRUE;
+}
+
+int Sys_MessageBox (const char* text, const char* caption, int type)
+{
+ GtkWidget *window, *w, *vbox, *hbox;
+ int mode = (type & LC_MB_TYPEMASK), ret, loop = 1;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_signal_connect (GTK_OBJECT (window), "delete_event",
+ GTK_SIGNAL_FUNC (dialog_delete_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy",
+ GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
+ gtk_window_set_title (GTK_WINDOW (window), caption);
+ gtk_container_border_width (GTK_CONTAINER (window), 10);
+ gtk_object_set_data (GTK_OBJECT (window), "loop", &loop);
+ gtk_object_set_data (GTK_OBJECT (window), "ret", &ret);
+ gtk_widget_realize (window);
+
+ vbox = gtk_vbox_new (FALSE, 10);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+ gtk_widget_show (vbox);
+
+ w = gtk_label_new (text);
+ gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
+ gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
+ gtk_widget_show (w);
+
+ w = gtk_hseparator_new ();
+ gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
+ gtk_widget_show (w);
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
+ gtk_widget_show (hbox);
+
+ if (mode == LC_MB_OK)
+ {
+ w = gtk_button_new_with_label ("Ok");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (LC_OK));
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+ ret = LC_OK;
+ }
+ else if (mode == LC_MB_OKCANCEL)
+ {
+ w = gtk_button_new_with_label ("Ok");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (LC_OK));
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("Cancel");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (LC_CANCEL));
+ gtk_widget_show (w);
+ ret = LC_CANCEL;
+ }
+ else if (mode == LC_MB_YESNOCANCEL)
+ {
+ w = gtk_button_new_with_label ("Yes");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (LC_YES));
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("No");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (LC_NO));
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("Cancel");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (LC_CANCEL));
+ gtk_widget_show (w);
+ ret = LC_CANCEL;
+ }
+ else /* if (mode == LC_MB_YESNO) */
+ {
+ w = gtk_button_new_with_label ("Yes");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (LC_YES));
+ GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (w);
+ gtk_widget_show (w);
+
+ w = gtk_button_new_with_label ("No");
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+ gtk_signal_connect (GTK_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (LC_NO));
+ gtk_widget_show (w);
+ ret = LC_NO;
+ }
+
+ gtk_widget_show (window);
+ gtk_grab_add (window);
+
+ while (loop)
+ gtk_main_iteration ();
+
+ gtk_grab_remove (window);
+ gtk_widget_destroy (window);
+
+ return ret;
+}
+
+// =============================================================================
+// Memory rendering
+
+typedef struct
+{
+ int width, height;
+ Display *xdisplay;
+ GLXPixmap glxpixmap;
+ GLXContext glxcontext;
+ GdkPixmap *pixmap;
+ GdkVisual *visual;
+} LC_RENDER;
+
+void* Sys_StartMemoryRender(int width, int height)
+{
+ LC_RENDER* render = (LC_RENDER*) malloc (sizeof (LC_RENDER));
+ int attrlist[] = { GLX_RGBA, GLX_DEPTH_SIZE, 16, 0 };
+ XVisualInfo *vi;
+ Pixmap xpixmap;
+
+ render->width = width;
+ render->height = height;
+ render->xdisplay = GDK_DISPLAY();
+
+ vi = pfnglXChooseVisual (render->xdisplay, DefaultScreen (render->xdisplay), attrlist);
+
+ render->visual = gdkx_visual_get (vi->visualid);
+ render->glxcontext = pfnglXCreateContext (render->xdisplay, vi, NULL, True);
+ render->pixmap = gdk_pixmap_new (NULL, width, height, render->visual->depth);
+
+ xpixmap = ((GdkPixmapPrivate*)render->pixmap)->xwindow;
+ render->glxpixmap = pfnglXCreateGLXPixmap (render->xdisplay, vi, xpixmap);
+
+ XFree(vi);
+
+ pfnglXMakeCurrent (render->xdisplay, render->glxpixmap, render->glxcontext);
+
+ return render;
+}
+
+void Sys_FinishMemoryRender(void* param)
+{
+ LC_RENDER* render = (LC_RENDER*)param;
+
+ gtk_gl_area_make_current (GTK_GL_AREA (drawing_area));
+
+ if (render->glxcontext == pfnglXGetCurrentContext ())
+ pfnglXMakeCurrent (render->xdisplay, None, NULL);
+ pfnglXDestroyContext (render->xdisplay, render->glxcontext);
+
+ pfnglXDestroyGLXPixmap (render->xdisplay, render->glxpixmap);
+ pfnglXWaitGL();
+ gdk_pixmap_unref (render->pixmap);
+ pfnglXWaitX();
+ free(render);
+}
+
+
+
+
+
+
+
+
// String
char* strupr(char* string)
{
@@ -41,32 +276,26 @@ char* strlwr(char* string)
-// Profile
-int SystemGetProfileInt(const char* section, const char* entry, const int defaultvalue)
-{
- return defaultvalue;
-}
-bool SystemSetProfileInt(const char* section, const char* entry, const int value)
-{
- return true;
-}
-bool SystemSetProfileString(const char* section, const char* entry, const char* value)
+void SystemPumpMessages()
{
- return true;
}
-const char* SystemGetProfileString(const char* section, const char* entry, const char* defaultvalue)
+long SystemGetTicks()
{
- return defaultvalue;
+ return 0;//GetTickCount();
}
// User Interface
void SystemUpdateViewport(int new_vp, int old_vp)
{
+ char buf[64];
+ sprintf (buf, "menu_view_viewports_%02d", new_vp+1);
+ gpointer item = gtk_object_get_data (GTK_OBJECT (main_window), buf);
+
ignore_commands = true;
- gtk_check_menu_item_set_state (GTK_CHECK_MENU_ITEM (main_menu.view_viewports[new_vp]), TRUE);
+ gtk_check_menu_item_set_state (GTK_CHECK_MENU_ITEM (item), TRUE);
ignore_commands = false;
}
@@ -227,21 +456,25 @@ void SystemUpdateRenderingMode(bool bBackground, bool bFast)
void SystemUpdateUndoRedo(char* undo, char* redo)
{
+ gpointer item;
char text[50];
strcpy(text, "Undo ");
if (undo)
strcat(text, undo);
- gtk_label_set_text (GTK_LABEL(GTK_BIN(main_menu.edit_undo)->child), text);
+ item = gtk_object_get_data (GTK_OBJECT (main_window), "menu_edit_undo");
+ gtk_label_set_text (GTK_LABEL (GTK_BIN (item)->child), text);
+ gtk_widget_set_sensitive (GTK_WIDGET (item), undo != NULL);
+
strcpy(text, "Redo ");
if (redo)
strcat(text, redo);
- gtk_label_set_text (GTK_LABEL(GTK_BIN(main_menu.edit_redo)->child), text);
+ item = gtk_object_get_data (GTK_OBJECT (main_window), "menu_edit_redo");
+ gtk_label_set_text (GTK_LABEL (GTK_BIN (item)->child), text);
+ gtk_widget_set_sensitive (GTK_WIDGET (item), redo != NULL);
gtk_widget_set_sensitive (main_toolbar.undo, undo != NULL);
gtk_widget_set_sensitive (main_toolbar.redo, redo != NULL);
- gtk_widget_set_sensitive (main_menu.edit_undo, undo != NULL);
- gtk_widget_set_sensitive (main_menu.edit_redo, redo != NULL);
}
void SystemUpdateSnap(const unsigned long snap)
@@ -255,65 +488,89 @@ void SystemUpdateSnap(const unsigned long snap)
void SystemUpdateCurrentCamera(Camera* pOld, Camera* pNew, Camera* pCamera)
{
- int i;
+ gpointer item = NULL, menu = gtk_object_get_data (GTK_OBJECT (main_window), "cameras_menu");
+ GList *lst = gtk_container_children (GTK_CONTAINER (menu));
- for (i = 0; pCamera; i++, pCamera = pCamera->m_pNext)
+ for (int i = 0; pCamera; i++, pCamera = pCamera->m_pNext)
if (pNew == pCamera)
+ {
+ if (i >= 7)
+ item = g_list_nth_data (lst, i-7);
+ else
+ {
+ guint len = g_list_length (lst);
+
+ if (len > 7)
+ item = g_list_nth_data (lst, len - 7 + i);
+ else
+ item = g_list_nth_data (lst, i);
+ }
break;
+ }
- ignore_commands = true;
- gtk_check_menu_item_set_state (GTK_CHECK_MENU_ITEM (main_menu.view_cameras[i]), TRUE);
- ignore_commands = false;
+ if (item)
+ {
+ ignore_commands = true;
+ gtk_check_menu_item_set_state (GTK_CHECK_MENU_ITEM (item), TRUE);
+ ignore_commands = false;
+ }
}
void SystemUpdateCameraMenu(Camera* pCamera)
{
+ GtkWidget *menu = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "cameras_menu"));
+ GtkWidget *item = NULL;
Camera* pFirst = pCamera;
- gtk_menu_item_remove_submenu (GTK_MENU_ITEM (main_menu.view_cameras_popup));
- GtkWidget *menu_item = NULL, *menu = gtk_menu_new ();
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (main_menu.view_cameras_popup), menu);
-
+ GList *lst;
int i;
+
+ // empty the menu
+ while ((lst = gtk_container_children (GTK_CONTAINER (menu))) != NULL)
+ gtk_container_remove (GTK_CONTAINER (menu), GTK_WIDGET (lst->data));
+
+ // add user cameras
for (i = 0; pCamera; i++, pCamera = pCamera->m_pNext)
if (i > 6)
{
- GSList* grp = menu_item ? gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menu_item)) : NULL;
- menu_item = gtk_radio_menu_item_new_with_label (grp, pCamera->GetName());
- gtk_menu_append (GTK_MENU (menu), menu_item);
- gtk_widget_show (menu_item);
- main_menu.view_cameras[i] = menu_item;
- gtk_signal_connect (GTK_OBJECT (menu_item), "activate", GTK_SIGNAL_FUNC (OnCommand), (void*)(i + ID_CAMERA_FIRST));
+ GSList* grp = item ? gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (item)) : NULL;
+ item = gtk_radio_menu_item_new_with_label (grp, pCamera->GetName());
+ gtk_menu_append (GTK_MENU (menu), item);
+ gtk_widget_show (item);
+ gtk_signal_connect (GTK_OBJECT (item), "activate", GTK_SIGNAL_FUNC (OnCommand),
+ GINT_TO_POINTER (i + ID_CAMERA_FIRST));
}
if (i > 7)
- {
- GtkWidget* sep = gtk_menu_item_new ();
- gtk_menu_append (GTK_MENU (menu), sep);
- gtk_widget_set_sensitive (sep, FALSE);
- gtk_widget_show (sep);
- }
+ menu_separator (menu);
+ // add standard cameras
for (pCamera = pFirst, i = 0; pCamera && (i < 7); i++, pCamera = pCamera->m_pNext)
{
- GSList* grp = menu_item ? gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menu_item)) : NULL;
- menu_item = gtk_radio_menu_item_new_with_label (grp, pCamera->GetName());
- gtk_menu_append (GTK_MENU (menu), menu_item);
- gtk_widget_show (menu_item);
- main_menu.view_cameras[i] = menu_item;
- gtk_signal_connect (GTK_OBJECT (menu_item), "activate", GTK_SIGNAL_FUNC (OnCommand), (void*)(i + ID_CAMERA_FIRST));
+ GSList* grp = item ? gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (item)) : NULL;
+ item = gtk_radio_menu_item_new_with_label (grp, pCamera->GetName());
+ gtk_menu_append (GTK_MENU (menu), item);
+ gtk_widget_show (item);
+ gtk_signal_connect (GTK_OBJECT (item), "activate", GTK_SIGNAL_FUNC (OnCommand),
+ GINT_TO_POINTER (i + ID_CAMERA_FIRST));
}
}
void SystemUpdateTime(bool bAnimation, int nTime, int nTotal)
{
+ GtkWidget *item;
+
gtk_widget_set_sensitive (anim_toolbar.first, nTime != 1);
gtk_widget_set_sensitive (anim_toolbar.prev, nTime > 1);
gtk_widget_set_sensitive (anim_toolbar.next, nTime < nTotal);
gtk_widget_set_sensitive (anim_toolbar.last, nTime != nTotal);
- gtk_widget_set_sensitive (main_menu.view_step_first, nTime != 1);
- gtk_widget_set_sensitive (main_menu.view_step_prev, nTime > 1);
- gtk_widget_set_sensitive (main_menu.view_step_next, nTime < nTotal);
- gtk_widget_set_sensitive (main_menu.view_step_last, nTime != nTotal);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_view_step_first"));
+ gtk_widget_set_sensitive (item, nTime != 1);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_view_step_previous"));
+ gtk_widget_set_sensitive (item, nTime > 1);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_view_step_next"));
+ gtk_widget_set_sensitive (item, nTime < nTotal);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_view_step_last"));
+ gtk_widget_set_sensitive (item, nTime != nTotal);
char text[11];
if (bAnimation)
@@ -332,7 +589,8 @@ void SystemUpdateAnimation(bool bAnimation, bool bAddKeys)
gtk_widget_set_sensitive (anim_toolbar.stop, FALSE);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(anim_toolbar.anim), bAnimation);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(anim_toolbar.keys), bAddKeys);
- gtk_label_set_text (GTK_LABEL(GTK_BIN(main_menu.piece_copy_keys)->child),
+ gpointer item = gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_copykeys");
+ gtk_label_set_text (GTK_LABEL (GTK_BIN (item)->child),
bAnimation ? "Copy Keys from Instructions" : "Copy Keys from Animation");
ignore_commands = false;
}
@@ -350,36 +608,51 @@ void SystemUpdateMoveSnap(unsigned short move_snap)
void SystemUpdateSelected(unsigned long flags)
{
+ GtkWidget *item;
+
// select all/none/invert/by name (menu)
- gtk_widget_set_sensitive (main_menu.edit_select_all, (flags & LC_SEL_UNSELECTED) != 0);
- gtk_widget_set_sensitive (main_menu.edit_select_none, flags &
- (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT) != 0);
- gtk_widget_set_sensitive (main_menu.edit_select_invert, (flags & LC_SEL_NO_PIECES) == 0);
- gtk_widget_set_sensitive (main_menu.edit_select_byname, (flags & LC_SEL_NO_PIECES) == 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_edit_select_all"));
+ gtk_widget_set_sensitive (item, (flags & LC_SEL_UNSELECTED) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_edit_select_none"));
+ gtk_widget_set_sensitive (item, flags & (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_edit_select_invert"));
+ gtk_widget_set_sensitive (item, (flags & LC_SEL_NO_PIECES) == 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_edit_select_byname"));
+ gtk_widget_set_sensitive (item, (flags & LC_SEL_NO_PIECES) == 0);
// cut, copy (menu/toolbar)
- gtk_widget_set_sensitive (main_menu.edit_cut, (flags & (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT)) != 0);
- gtk_widget_set_sensitive (main_menu.edit_copy, (flags & (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT)) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_edit_cut"));
+ gtk_widget_set_sensitive (item, (flags & (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT)) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_edit_copy"));
+ gtk_widget_set_sensitive (item, (flags & (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT)) != 0);
gtk_widget_set_sensitive (main_toolbar.cut, (flags & (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT)) != 0);
gtk_widget_set_sensitive (main_toolbar.copy, (flags & (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT)) != 0);
// delete, array, hide sel/unsel, unhideall, copykeys (menu)
- gtk_widget_set_sensitive (main_menu.piece_delete, (flags &
- (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT)) != 0);
- gtk_widget_set_sensitive (main_menu.piece_array, (flags & LC_SEL_PIECE) != 0);
- gtk_widget_set_sensitive (main_menu.piece_hide_sel, (flags & LC_SEL_PIECE) != 0);
- gtk_widget_set_sensitive (main_menu.piece_hide_unsel, (flags & LC_SEL_UNSELECTED) != 0);
- gtk_widget_set_sensitive (main_menu.piece_unhide, (flags & LC_SEL_HIDDEN) != 0);
- gtk_widget_set_sensitive (main_menu.piece_copy_keys, (flags &
- (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT)) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_delete"));
+ gtk_widget_set_sensitive (item, (flags & (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT)) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_array"));
+ gtk_widget_set_sensitive (item, (flags & LC_SEL_PIECE) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_hide_selected"));
+ gtk_widget_set_sensitive (item, (flags & LC_SEL_PIECE) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_hide_unselected"));
+ gtk_widget_set_sensitive (item, (flags & LC_SEL_UNSELECTED) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_unhide_all"));
+ gtk_widget_set_sensitive (item, (flags & LC_SEL_HIDDEN) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_copykeys"));
+ gtk_widget_set_sensitive (item, (flags & (LC_SEL_PIECE|LC_SEL_CAMERA|LC_SEL_LIGHT)) != 0);
// groups (menu)
- gtk_widget_set_sensitive (main_menu.piece_group, (flags & LC_SEL_CANGROUP) != 0);
- gtk_widget_set_sensitive (main_menu.piece_ungroup, (flags & LC_SEL_GROUP) != 0);
- gtk_widget_set_sensitive (main_menu.piece_group_add, (flags &
- (LC_SEL_GROUP|LC_SEL_FOCUSGROUP)) == LC_SEL_GROUP);
- gtk_widget_set_sensitive (main_menu.piece_group_remove, (flags & LC_SEL_FOCUSGROUP) != 0);
- gtk_widget_set_sensitive (main_menu.piece_edit_groups, (flags & LC_SEL_NO_PIECES) == 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_group"));
+ gtk_widget_set_sensitive (item, (flags & LC_SEL_CANGROUP) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_ungroup"));
+ gtk_widget_set_sensitive (item, (flags & LC_SEL_GROUP) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_group_add"));
+ gtk_widget_set_sensitive (item, (flags & (LC_SEL_GROUP|LC_SEL_FOCUSGROUP)) == LC_SEL_GROUP);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_group_remove"));
+ gtk_widget_set_sensitive (item, (flags & LC_SEL_FOCUSGROUP) != 0);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_piece_group_edit"));
+ gtk_widget_set_sensitive (item, (flags & LC_SEL_NO_PIECES) == 0);
gtk_widget_set_sensitive (tool_toolbar.prev, (flags & LC_SEL_PIECE) != 0);
gtk_widget_set_sensitive (tool_toolbar.next, (flags & LC_SEL_PIECE) != 0);
@@ -387,26 +660,42 @@ void SystemUpdateSelected(unsigned long flags)
void SystemUpdateRecentMenu(char names[4][LC_MAXPATH])
{
- if (strlen(names[0]) == 0)
- {
- gtk_label_set_text (GTK_LABEL(GTK_BIN(main_menu.file_recent[0])->child), "Recent Files");
- gtk_widget_set_sensitive (main_menu.file_recent[0], FALSE);
- }
- else
- {
- gtk_label_set_text (GTK_LABEL(GTK_BIN(main_menu.file_recent[0])->child), names[0]);
- gtk_widget_set_sensitive (main_menu.file_recent[0], TRUE);
- }
+ GtkAccelGroup *accel = (GtkAccelGroup*)gtk_object_get_data (GTK_OBJECT (main_window), "file_menu_accel");
+ GtkWidget *item;
+ char buf[32];
- for (int i = 1; i < 4; i++)
+ for (int i = 0; i < 4; i++)
{
- GtkWidget* menu_item = main_menu.file_recent[i];
- if (strlen(names[i]) == 0)
- gtk_widget_hide (menu_item);
+ sprintf (buf, "menu_file_recent%d", i+1);
+ item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), buf));
+
+ if (strlen (names[i]) == 0)
+ {
+ if (i == 0)
+ {
+ gtk_label_set_text (GTK_LABEL (GTK_BIN (item)->child), "Recent Files");
+ gtk_widget_set_sensitive (item, FALSE);
+ }
+ else
+ gtk_widget_hide (item);
+ }
else
{
- gtk_widget_show (menu_item);
- gtk_label_set_text (GTK_LABEL(GTK_BIN(menu_item)->child), names[i]);
+ char pattern[LC_MAXPATH+4], text[LC_MAXPATH+4];
+ gint length;
+
+ sprintf (text, "%d- %s", i+1, names[i]);
+ gtk_label_set_text (GTK_LABEL (GTK_BIN (item)->child), text);
+
+ length = strlen (text);
+ memset (pattern, ' ', length);
+ pattern[length] = '\0';
+ pattern[0] = '_';
+ gtk_label_set_pattern (GTK_LABEL (GTK_BIN (item)->child), pattern);
+
+ gtk_widget_show (item);
+ gtk_widget_set_sensitive (item, TRUE);
+ gtk_widget_add_accelerator (item, "activate_item", accel, text[0], 0, (GtkAccelFlags)0);
}
}
}
@@ -414,7 +703,8 @@ void SystemUpdateRecentMenu(char names[4][LC_MAXPATH])
void SystemUpdatePaste(bool enable)
{
gtk_widget_set_sensitive (main_toolbar.paste, enable);
- gtk_widget_set_sensitive (main_menu.edit_paste, enable);
+ GtkWidget *item = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (main_window), "menu_edit_paste"));
+ gtk_widget_set_sensitive (item, enable);
}
void SystemUpdatePlay(bool play, bool stop)
@@ -434,75 +724,6 @@ void SystemUpdateFocus(void* object, unsigned char type)
gtk_label_set (GTK_LABEL (label_position), text);
}
-// Memory render
-typedef struct
-{
- int width, height;
- GdkGLPixmap *glpixmap;
- GdkGLContext *context;
- GdkPixmap *pixmap;
-} LC_RENDER;
-
-void* SystemStartRender(int width, int height)
-{
- GdkVisual *visual;
- LC_RENDER* render = (LC_RENDER*)malloc(sizeof(LC_RENDER));
- int attrlist[] = { GLX_RGBA, GLX_DEPTH_SIZE, 16, 0 };
- visual = gdk_gl_choose_visual(attrlist);
-
- render->width = width;
- render->height = height;
- render->context = gdk_gl_context_new(visual);
- render->pixmap = gdk_pixmap_new(NULL, width, height, visual->depth);
- render->glpixmap = gdk_gl_pixmap_new(visual, render->pixmap);
- gdk_gl_pixmap_make_current(render->glpixmap, render->context);
-
- return render;
-}
-
-void SystemFinishRender(void* param)
-{
- LC_RENDER* render = (LC_RENDER*)param;
-
- gtk_gl_area_make_current(GTK_GL_AREA(drawing_area));
- gdk_gl_context_unref(render->context);
- gdk_gl_pixmap_unref(render->glpixmap);
- gdk_pixmap_unref(render->pixmap);
- free(render);
-}
-
-LC_IMAGE* SystemGetRenderImage(void* param)
-{
- LC_RENDER* render = (LC_RENDER*)param;
- LC_IMAGE* image = (LC_IMAGE*)malloc(sizeof(LC_IMAGE)+
- (render->width*render->height*3));
-
- image->width = render->width;
- image->height = render->height;
- image->bits = (char*)image + sizeof(LC_IMAGE);
-
- glFinish();
-
- int x, y;
- unsigned char* p = (unsigned char*)image->bits;
-
- GdkImage* gi = gdk_image_get(render->pixmap, 0, 0,
- render->width, render->height);
- for (y = 0; y < render->height; y++)
- for (x = 0; x < render->width; x++)
- {
- guint32 ui = gdk_image_get_pixel (gi, x, y);
- *p = (ui & 0xFF0000) >> 16; p++;
- *p = (ui & 0x00FF00) >> 8; p++;
- *p = (ui & 0x0000FF); p++;
- }
-
- gdk_image_destroy(gi);
-
- return image;
-}
-
-
void SystemInit()
{
}
@@ -567,6 +788,10 @@ bool SystemDoDialog(int mode, void* param)
return propertiesdlg_execute(param) == LC_OK;
} break;
+ case LC_DLG_LIBRARY: {
+ return librarydlg_execute(param) == LC_OK;
+ } break;
+
case LC_DLG_SELECTBYNAME: {
} break;
diff --git a/linux/toolbar.cpp b/linux/toolbar.cpp
index 778ea09..20c58e2 100644
--- a/linux/toolbar.cpp
+++ b/linux/toolbar.cpp
@@ -3,10 +3,8 @@
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include <GL/glx.h>
#include <stdio.h>
+#include "opengl.h"
#include "gtktools.h"
#include "gtkglarea.h"
#include "main.h"
@@ -14,7 +12,6 @@
#include "project.h"
#include "pieceinf.h"
#include "toolbar.h"
-#include "custom.h"
// =========================================================
@@ -80,10 +77,10 @@ void create_toolbars(GtkWidget *window, GtkWidget *vbox)
// Main Toolbar
main_toolbar.handle_box = gtk_handle_box_new ();
gtk_box_pack_start (GTK_BOX (vbox), main_toolbar.handle_box, FALSE, FALSE, 0);
- if (user_rc.view_main_toolbar)
+ // if (user_rc.view_main_toolbar)
gtk_widget_show (main_toolbar.handle_box);
main_toolbar.toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
- gtk_toolbar_set_style (GTK_TOOLBAR (main_toolbar.toolbar), user_rc.toolbar_style);
+ // gtk_toolbar_set_style (GTK_TOOLBAR (main_toolbar.toolbar), user_rc.toolbar_style);
gtk_container_add (GTK_CONTAINER (main_toolbar.handle_box), main_toolbar.toolbar);
gtk_widget_show (main_toolbar.toolbar);
@@ -142,11 +139,11 @@ void create_toolbars(GtkWidget *window, GtkWidget *vbox)
// Tools Toolbar
tool_toolbar.handle_box = gtk_handle_box_new ();
gtk_box_pack_start (GTK_BOX (vbox),tool_toolbar. handle_box, FALSE, FALSE, 0);
- if (user_rc.view_tool_toolbar)
+ // if (user_rc.view_tool_toolbar)
gtk_widget_show (tool_toolbar.handle_box);
tool_toolbar.toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);
- gtk_toolbar_set_style (GTK_TOOLBAR (tool_toolbar.toolbar), user_rc.toolbar_style);
+ // gtk_toolbar_set_style (GTK_TOOLBAR (tool_toolbar.toolbar), user_rc.toolbar_style);
gtk_container_add (GTK_CONTAINER (tool_toolbar.handle_box), tool_toolbar.toolbar);
gtk_widget_show (tool_toolbar.toolbar);
@@ -205,7 +202,7 @@ void create_toolbars(GtkWidget *window, GtkWidget *vbox)
// Animation Toolbar
anim_toolbar.handle_box = gtk_handle_box_new ();
gtk_box_pack_start (GTK_BOX (vbox), anim_toolbar.handle_box, FALSE, FALSE, 0);
- if (user_rc.view_anim_toolbar)
+ // if (user_rc.view_anim_toolbar)
gtk_widget_show (anim_toolbar.handle_box);
anim_toolbar.toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS);