First release of the editor stuff I've been working on, to test: 'editor' in console
This commit is contained in:
parent
13c4c8206e
commit
18c7f1ed7c
5 changed files with 378 additions and 49 deletions
|
@ -59,12 +59,6 @@ qpic_t *draw_backtile;
|
|||
//=============================================================================
|
||||
/* Support Routines */
|
||||
|
||||
typedef struct cachepic_s
|
||||
{
|
||||
char name[MAX_QPATH];
|
||||
cache_user_t cache;
|
||||
} cachepic_t;
|
||||
|
||||
#define MAX_CACHED_PICS 128
|
||||
cachepic_t menu_cachepics[MAX_CACHED_PICS];
|
||||
int menu_numcachepics;
|
||||
|
|
|
@ -1034,7 +1034,7 @@ void Con_Init_Cvars ();
|
|||
void Mod_Init_Cvars();
|
||||
void Chase_Init_Cvars ();
|
||||
void SCR_Init_Cvars ();
|
||||
void VID_Init_Cvars();
|
||||
void VID_Init_Cmds();
|
||||
void V_Init_Cvars();
|
||||
void R_Init_Cvars ();
|
||||
void CL_Init_Cvars ();
|
||||
|
@ -1313,12 +1313,12 @@ void Host_Init (quakeparms_t *parms)
|
|||
Cvar_Init ();
|
||||
Cbuf_Init ();
|
||||
Cmd_Init ();
|
||||
VID_Init_Cmds();
|
||||
COM_Init_Cvars (); // initialize all filesystem related variables
|
||||
Con_Init_Cvars (); // initialize all console related cvars
|
||||
Mod_Init_Cvars(); // initialize all model related cvars
|
||||
Chase_Init_Cvars (); // initialize all chase camera related cvars
|
||||
SCR_Init_Cvars (); // initialize all screen(?) related cvars
|
||||
VID_Init_Cvars(); // initialize all video related cvars
|
||||
V_Init_Cvars(); // initialize all view related cvars
|
||||
R_Init_Cvars (); // initialize all rendering system related cvars
|
||||
CL_Init_Cvars (); // initialize all cl_* related cvars
|
||||
|
|
|
@ -1008,9 +1008,6 @@ static int WritePCXfile (const char *filename, byte *data, int width, int height
|
|||
COM_WriteFile(filename, pcx, length);
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
extern unsigned char vid_curpal[256*3];
|
||||
#endif
|
||||
/*
|
||||
==================
|
||||
SCR_ScreenShot_f
|
||||
|
@ -1018,8 +1015,8 @@ SCR_ScreenShot_f
|
|||
*/
|
||||
void SCR_ScreenShot_f (void)
|
||||
{
|
||||
char pcxname[80];
|
||||
char checkname[MAX_OSPATH];
|
||||
char pcxname[80];
|
||||
char checkname[MAX_OSPATH];
|
||||
int i;
|
||||
|
||||
for (i=0 ; i<=255 ; i++)
|
||||
|
|
|
@ -21,6 +21,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
// draw.h -- these are the only functions outside the refresh allowed
|
||||
// to touch the vid buffer
|
||||
|
||||
typedef struct cachepic_s
|
||||
{
|
||||
char name[MAX_QPATH];
|
||||
cache_user_t cache;
|
||||
} cachepic_t;
|
||||
|
||||
extern qpic_t *draw_disc; // also used on sbar
|
||||
extern unsigned char d_15to8table[65536];
|
||||
void Draw_Init (void);
|
||||
|
|
404
video/vid_gdk.c
404
video/vid_gdk.c
|
@ -39,7 +39,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "../splash.xpm"
|
||||
#include "../icon.xpm"
|
||||
|
||||
viddef_t vid; // global video state
|
||||
viddef_t vid;
|
||||
unsigned short d_8to16table[256];
|
||||
|
||||
static int gdk_initialized = 0;
|
||||
|
@ -64,7 +64,6 @@ static int verbose = 0;
|
|||
static long X11_highhunkmark;
|
||||
static long X11_buffersize;
|
||||
|
||||
static int vid_buffersize;
|
||||
static int vid_surfcachesize;
|
||||
void *vid_surfcache;
|
||||
static int vid_center_x, vid_center_y;
|
||||
|
@ -78,12 +77,15 @@ int config_notify=0;
|
|||
int config_notify_width;
|
||||
int config_notify_height;
|
||||
|
||||
qboolean vid_ineditor;
|
||||
static unsigned char *ed_palette;
|
||||
|
||||
void VID_HandleDeath(int signal_num)
|
||||
{
|
||||
Sys_Error("[VIDEO] This death brought to you by the number %d\n", signal_num);
|
||||
}
|
||||
|
||||
void ResetFrameBuffer(void)
|
||||
void VID_ResetFrameBuffer(void)
|
||||
{
|
||||
if (d_pzbuffer)
|
||||
{
|
||||
|
@ -150,6 +152,7 @@ void VID_Init(unsigned char *palette)
|
|||
Sys_Error("[VIDEO] Bad window height\n");
|
||||
}
|
||||
|
||||
ed_palette = palette;
|
||||
vid.maxwarpwidth = WARP_WIDTH;
|
||||
vid.maxwarpheight = WARP_HEIGHT;
|
||||
vid.maxlowwidth = LOW_WIDTH;
|
||||
|
@ -163,7 +166,6 @@ void VID_Init(unsigned char *palette)
|
|||
/* initialize GDK */
|
||||
gtk_init(NULL, NULL);
|
||||
gdk_rgb_init();
|
||||
gdk_initialized = 1;;
|
||||
|
||||
sigaction(SIGINT, 0, &sa);
|
||||
sa.sa_handler = VID_HandleDeath;
|
||||
|
@ -175,14 +177,13 @@ void VID_Init(unsigned char *palette)
|
|||
|
||||
/* create the main window */
|
||||
x_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title(x_win, "NGUNIX X11");
|
||||
gtk_window_set_title(x_win, "NGUNIX");
|
||||
gtk_widget_set_size_request(x_win, vid.width, vid.height);
|
||||
gtk_window_set_default_size(x_win, vid.width, vid.height);
|
||||
gtk_window_set_position(x_win,GTK_WIN_POS_CENTER_ALWAYS);
|
||||
g_signal_connect (x_win, "destroy", G_CALLBACK (exit), NULL);
|
||||
gtk_widget_set_events(x_win, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
|
||||
|
||||
|
||||
if ((pnum=COM_CheckParm("-noborder")))
|
||||
gtk_window_set_decorated(x_win, FALSE);
|
||||
|
||||
|
@ -194,7 +195,7 @@ void VID_Init(unsigned char *palette)
|
|||
|
||||
/* map the window */
|
||||
gtk_widget_show_all(x_win);
|
||||
ResetFrameBuffer();
|
||||
VID_ResetFrameBuffer();
|
||||
|
||||
vid.rowbytes = vid.width;
|
||||
vid.buffer = x_framebuffer;
|
||||
|
@ -212,6 +213,7 @@ void VID_Init(unsigned char *palette)
|
|||
vid_center_y = (int)(((float)vid_frame[2] / 2) + vid_frame[1]);
|
||||
vid_frame[2] += vid_frame[0];
|
||||
vid_frame[3] += vid_frame[1];
|
||||
gdk_initialized = 1;
|
||||
}
|
||||
|
||||
void VID_ShiftPalette(unsigned char *p)
|
||||
|
@ -247,7 +249,7 @@ void VID_Shutdown(void)
|
|||
Con_Printf("[VIDEO] Shutting down...\n");
|
||||
}
|
||||
|
||||
int XLateKey(int keysym)
|
||||
int IN_LateKey(int keysym)
|
||||
{
|
||||
int key = 0;
|
||||
|
||||
|
@ -418,7 +420,7 @@ struct {
|
|||
|
||||
int keyq_head = 0;
|
||||
int keyq_tail = 0;
|
||||
void GetEvent(void)
|
||||
void VID_GetEvent(void)
|
||||
{
|
||||
int w, h;
|
||||
GdkEvent *event;
|
||||
|
@ -427,12 +429,12 @@ void GetEvent(void)
|
|||
if (event)
|
||||
switch (event->type) {
|
||||
case GDK_KEY_PRESS:
|
||||
keyq[keyq_head].key = XLateKey(event->key.keyval);
|
||||
keyq[keyq_head].key = IN_LateKey(event->key.keyval);
|
||||
keyq[keyq_head].down = true;
|
||||
keyq_head = (keyq_head + 1) & 63;
|
||||
break;
|
||||
case GDK_KEY_RELEASE:
|
||||
keyq[keyq_head].key = XLateKey(event->key.keyval);
|
||||
keyq[keyq_head].key = IN_LateKey(event->key.keyval);
|
||||
keyq[keyq_head].down = false;
|
||||
keyq_head = (keyq_head + 1) & 63;
|
||||
break;
|
||||
|
@ -496,7 +498,7 @@ void VID_Update(vrect_t * rects)
|
|||
vid.width = config_notify_width & ~7;
|
||||
vid.height = config_notify_height;
|
||||
|
||||
ResetFrameBuffer();
|
||||
VID_ResetFrameBuffer();
|
||||
|
||||
vid.rowbytes = vid.width;
|
||||
vid.buffer = x_framebuffer;
|
||||
|
@ -517,25 +519,6 @@ void VID_Update(vrect_t * rects)
|
|||
}
|
||||
}
|
||||
|
||||
static int dither;
|
||||
void VID_DitherOn(void)
|
||||
{
|
||||
if (dither == 0)
|
||||
{
|
||||
vid.recalc_refdef = 1;
|
||||
dither = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void VID_DitherOff(void)
|
||||
{
|
||||
if (dither)
|
||||
{
|
||||
vid.recalc_refdef = 1;
|
||||
dither = 0;
|
||||
}
|
||||
}
|
||||
|
||||
int Sys_OpenWindow(void)
|
||||
{
|
||||
return 0;
|
||||
|
@ -560,7 +543,7 @@ void Sys_SendKeyEvents(void)
|
|||
|
||||
while (gdk_events_pending())
|
||||
{
|
||||
GetEvent();
|
||||
VID_GetEvent();
|
||||
while (keyq_head != keyq_tail)
|
||||
{
|
||||
Key_Event(keyq[keyq_tail].key, keyq[keyq_tail].down);
|
||||
|
@ -743,8 +726,357 @@ void IN_ShowMouse (void)
|
|||
gdk_window_set_cursor(gtk_widget_get_window(x_win), cursor_arrow);
|
||||
}
|
||||
|
||||
/*
|
||||
* NGUNIX EDITOR GUFF
|
||||
*/
|
||||
static GtkWidget *ed_window;
|
||||
static GdkGC *ed_pic;
|
||||
static qpic_t *ed_file;
|
||||
static GtkWidget *ed_menubar;
|
||||
static GdkRgbCmap *ed_cmap = NULL;
|
||||
|
||||
/* PALETTE SWITCHER
|
||||
* ===============
|
||||
* TODO: This somehow affects the main engine despite us using our own GdkColmap...
|
||||
*/
|
||||
gint VID_EditorLoadPalette(gpointer data)
|
||||
{
|
||||
int i;
|
||||
GtkWidget *dialog;
|
||||
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
|
||||
gint res;
|
||||
loadedfile_t *palfile;
|
||||
unsigned int colors[256];
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new ("Open File",
|
||||
NULL,
|
||||
action,
|
||||
("_Cancel"),
|
||||
GTK_RESPONSE_CANCEL,
|
||||
("_Open"),
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
|
||||
res = gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
if (res == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
char *filename;
|
||||
GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
|
||||
filename = gtk_file_chooser_get_filename (chooser);
|
||||
|
||||
palfile = COM_LoadFile (filename, 2);
|
||||
|
||||
if(palfile)
|
||||
{
|
||||
for(i=0; i < 16*16*3; i++)
|
||||
ed_palette[i] = palfile->data[i];
|
||||
|
||||
if (ed_cmap)
|
||||
gdk_rgb_cmap_free(ed_cmap);
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
unsigned char r, g, b;
|
||||
r = *ed_palette++;
|
||||
g = *ed_palette++;
|
||||
b = *ed_palette++;
|
||||
colors[i] = r << 16 | g << 8 | b;
|
||||
}
|
||||
|
||||
ed_cmap = gdk_rgb_cmap_new(colors, 256);
|
||||
|
||||
}
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* COLORMAP VIEWER
|
||||
* ===============
|
||||
* Colormaps differ from lump files in the way that they don't start with a width | height header
|
||||
* Otherwise they are identical in how they refer to palette indexes for their color*/
|
||||
gint VID_EditorViewColormap(gpointer data)
|
||||
{
|
||||
int i;
|
||||
GtkWidget *dialog;
|
||||
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
|
||||
gint res;
|
||||
loadedfile_t *pic;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new ("Open File",
|
||||
NULL,
|
||||
action,
|
||||
("_Cancel"),
|
||||
GTK_RESPONSE_CANCEL,
|
||||
("_Open"),
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
|
||||
res = gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
if (res == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
char *filename;
|
||||
GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
|
||||
filename = gtk_file_chooser_get_filename (chooser);
|
||||
|
||||
pic = COM_LoadFile (filename, 2);
|
||||
|
||||
|
||||
if(pic)
|
||||
{
|
||||
ed_file = malloc(16385 + (sizeof(int) * 2));
|
||||
|
||||
ed_file->width = 256;
|
||||
ed_file->height = 64;
|
||||
|
||||
for(i = 0; i < 256 * 64; i++)
|
||||
ed_file->data[i] = pic->data[i];
|
||||
|
||||
}
|
||||
|
||||
gtk_window_resize(ed_window, ed_file->width, ed_file->height + ed_menubar->allocation.height);
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
return 0;
|
||||
}
|
||||
|
||||
gint VID_EditorGenerateColormap(gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkFileChooser *chooser;
|
||||
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE;
|
||||
gint res;
|
||||
byte *pic;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new ("Save File",
|
||||
NULL,
|
||||
action,
|
||||
("_Cancel"),
|
||||
GTK_RESPONSE_CANCEL,
|
||||
("_Save"),
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
chooser = GTK_FILE_CHOOSER (dialog);
|
||||
gtk_file_chooser_set_do_overwrite_confirmation (chooser, TRUE);
|
||||
|
||||
//if (user_edited_a_new_document)
|
||||
gtk_file_chooser_set_current_name (chooser,
|
||||
("colormap.lmp"));
|
||||
//else
|
||||
// gtk_file_chooser_set_filename (chooser,
|
||||
// existing_filename);
|
||||
|
||||
res = gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
if (res == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
char *filename;
|
||||
filename = gtk_file_chooser_get_filename (chooser);
|
||||
unsigned char out_colormap[16384];
|
||||
Colormap_Generate(ed_palette, out_colormap);
|
||||
COM_WriteFile (filename, out_colormap, 16384);
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
return 0;
|
||||
}
|
||||
|
||||
gint VID_EditorSaveFile(gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkFileChooser *chooser;
|
||||
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE;
|
||||
gint res;
|
||||
byte *pic;
|
||||
|
||||
if(!ed_file)
|
||||
return;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new ("Save File",
|
||||
NULL,
|
||||
action,
|
||||
("_Cancel"),
|
||||
GTK_RESPONSE_CANCEL,
|
||||
("_Save"),
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
chooser = GTK_FILE_CHOOSER (dialog);
|
||||
gtk_file_chooser_set_do_overwrite_confirmation (chooser, TRUE);
|
||||
|
||||
//if (user_edited_a_new_document)
|
||||
gtk_file_chooser_set_current_name (chooser,
|
||||
("untitled.lmp"));
|
||||
//else
|
||||
// gtk_file_chooser_set_filename (chooser,
|
||||
// existing_filename);
|
||||
|
||||
res = gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
if (res == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
char *filename;
|
||||
filename = gtk_file_chooser_get_filename (chooser);
|
||||
//save_to_file (filename);
|
||||
pic = malloc(2 + (ed_file->width * ed_file->height));
|
||||
|
||||
printf("Saving IMAGE: %i, %i\n", ed_file->width, ed_file->height);
|
||||
|
||||
//memcpy(pic, &ed_file->width, sizeof(ed_file->width));
|
||||
//memcpy(pic + sizeof(ed_file->width), &ed_file->height, sizeof(ed_file->height));
|
||||
//memcpy(pic + (sizeof(ed_file->width) + sizeof(ed_file->height)), &ed_file->data, sizeof(ed_file->data));
|
||||
|
||||
pic[0] = ed_file->width;
|
||||
pic[1] = ed_file->height;
|
||||
|
||||
int i;
|
||||
for(i = 0; i < ed_file->width * ed_file->height; i++)
|
||||
pic[i+2] = ed_file->data[i];
|
||||
|
||||
#if 0
|
||||
printf("Saving IMAGE: %i, %i\n", pic[0], pic[1]);
|
||||
for(i = 2; i < pic[0] * pic[1]+2; i++)
|
||||
printf("%i,", pic[i]);
|
||||
printf("\n...DONE\n");
|
||||
#endif
|
||||
|
||||
COM_WriteFile (filename, pic, ed_file->width * ed_file->height + 2);
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
return 0;
|
||||
}
|
||||
|
||||
gint VID_EditorLoadFile(gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
|
||||
gint res;
|
||||
loadedfile_t *pic;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new ("Open File",
|
||||
NULL,
|
||||
action,
|
||||
("_Cancel"),
|
||||
GTK_RESPONSE_CANCEL,
|
||||
("_Open"),
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
|
||||
res = gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
if (res == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
char *filename;
|
||||
GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
|
||||
filename = gtk_file_chooser_get_filename (chooser);
|
||||
|
||||
pic = COM_LoadFile (filename, 2);
|
||||
|
||||
if(pic)
|
||||
ed_file = (qpic_t *)pic->data;
|
||||
#if 0
|
||||
int i;
|
||||
printf("Loading IMAGE: %i, %i\n", ed_file->width, ed_file->height);
|
||||
for(i = 0; i < ed_file->width * ed_file->height; i++)
|
||||
printf("%i,", ed_file->data[i]);
|
||||
printf("\n...DONE\n");
|
||||
#endif
|
||||
gtk_window_resize(ed_window, ed_file->width, ed_file->height + ed_menubar->allocation.height);
|
||||
g_free (filename);
|
||||
//g_free(pic);
|
||||
}
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void VID_EditorQuit(void)
|
||||
{
|
||||
gtk_widget_destroy(ed_window);
|
||||
vid_ineditor = false;
|
||||
gtk_main_quit();
|
||||
}
|
||||
|
||||
gint VID_EditorUpdate(gpointer data)
|
||||
{
|
||||
if(ed_file)
|
||||
gdk_draw_indexed_image(gtk_widget_get_window(ed_window), ed_pic, 0, ed_menubar->allocation.height, ed_file->width, ed_file->height, GDK_RGB_DITHER_NONE, ed_file->data, ed_file->width, ed_cmap);
|
||||
|
||||
return 1;
|
||||
}
|
||||
void VID_LaunchEditor(void)
|
||||
{
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *fileMenu;
|
||||
GtkWidget *extraMenu;
|
||||
|
||||
ed_cmap = x_cmap;
|
||||
vid_ineditor = true;
|
||||
ed_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_position(GTK_WINDOW(ed_window), GTK_WIN_POS_CENTER);
|
||||
gtk_window_set_default_size(GTK_WINDOW(ed_window), 300, 200);
|
||||
gtk_window_set_title(GTK_WINDOW(ed_window), "NGUNIX - 2D Lump Editor");
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(ed_window), vbox);
|
||||
|
||||
ed_menubar = gtk_menu_bar_new();
|
||||
fileMenu = gtk_menu_new();
|
||||
extraMenu = gtk_menu_new();
|
||||
|
||||
GtkWidget *fileMi = gtk_menu_item_new_with_label("File");
|
||||
GtkWidget *newMi = gtk_menu_item_new_with_label("New");
|
||||
GtkWidget *loadMi = gtk_menu_item_new_with_label("Load...");
|
||||
GtkWidget *saveMi = gtk_menu_item_new_with_label("Save...");
|
||||
GtkWidget *quitMi = gtk_menu_item_new_with_label("Quit");
|
||||
|
||||
GtkWidget *extrMi = gtk_menu_item_new_with_label("Extra");
|
||||
GtkWidget *swipalMi = gtk_menu_item_new_with_label("Switch Palette...");
|
||||
GtkWidget *viewcolmapMi = gtk_menu_item_new_with_label("View Colormap...");
|
||||
GtkWidget *gencolmapMi = gtk_menu_item_new_with_label("Generate Colormap...");
|
||||
|
||||
gtk_menu_item_set_submenu(GTK_MENU_ITEM(fileMi), fileMenu);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), newMi);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), loadMi);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), saveMi);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), quitMi);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(ed_menubar), fileMi);
|
||||
|
||||
gtk_menu_item_set_submenu(GTK_MENU_ITEM(extrMi), extraMenu);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(extraMenu), swipalMi);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(extraMenu), viewcolmapMi);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(extraMenu), gencolmapMi);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(ed_menubar), extrMi);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(vbox), ed_menubar, FALSE, FALSE, 0);
|
||||
|
||||
g_signal_connect(G_OBJECT(ed_window), "destroy", G_CALLBACK(VID_EditorQuit), NULL);
|
||||
g_signal_connect(G_OBJECT(loadMi), "activate", G_CALLBACK(VID_EditorLoadFile), NULL);
|
||||
g_signal_connect(G_OBJECT(saveMi), "activate", G_CALLBACK(VID_EditorSaveFile), NULL);
|
||||
g_signal_connect(G_OBJECT(quitMi), "activate", G_CALLBACK(VID_EditorQuit), NULL);
|
||||
g_signal_connect(G_OBJECT(swipalMi), "activate", G_CALLBACK(VID_EditorLoadPalette), NULL);
|
||||
g_signal_connect(G_OBJECT(viewcolmapMi), "activate", G_CALLBACK(VID_EditorViewColormap), NULL);
|
||||
g_signal_connect(G_OBJECT(gencolmapMi), "activate", G_CALLBACK(VID_EditorGenerateColormap), NULL);
|
||||
|
||||
gtk_timeout_add(100, VID_EditorUpdate, NULL);
|
||||
|
||||
gtk_widget_realize(ed_window);
|
||||
gtk_widget_realize(ed_menubar);
|
||||
ed_pic = gdk_gc_new(gtk_widget_get_window(ed_window));
|
||||
gtk_widget_show_all(ed_window);
|
||||
|
||||
gtk_main();
|
||||
};
|
||||
|
||||
void VID_Init_Cmds(void)
|
||||
{
|
||||
Cmd_AddCommand ("editor", VID_LaunchEditor);
|
||||
}
|
||||
|
||||
// Commdand graveyard TODO: Get rid of this
|
||||
void IN_Commands(){}
|
||||
void IN_Init(){}
|
||||
void IN_Shutdown(){}
|
||||
void VID_Init_Cvars(){}
|
||||
void IN_Init(void){}
|
||||
void IN_Shutdown(void){}
|
||||
void IN_Commands(void){}
|
||||
|
|
Loading…
Reference in a new issue