예제 #1
0
AG_Button *AGOL_About::CreateOKButton(void *parent)
{
	AG_Box    *bbox;
	AG_Button *button;

	bbox = AG_BoxNewHoriz(parent, AG_BOX_HFILL);

	// This empty box positions the button to the right
	AG_BoxNewHoriz(bbox, AG_BOX_HFILL);

	button = AG_ButtonNewFn(bbox, 0, "  OK  ", EventReceiver, "%p", 
			RegisterEventHandler((EVENT_FUNC_PTR)&AGOL_About::OnOK));

	return button;
}
예제 #2
0
AG_Box *AGOL_About::CreateLicenseBox(void *parent)
{
	AG_Box     *lbox;
	AG_Textbox *text;

	lbox = AG_BoxNewVert(parent, AG_BOX_EXPAND);
	AG_LabelNewS(lbox, 0, "License");
	lbox = AG_BoxNewHoriz(lbox, AG_BOX_EXPAND);
	AG_BoxSetPadding(lbox, 5);
	AG_BoxSetSpacing(lbox, 5);

	text = AG_TextboxNewS(lbox, AG_TEXTBOX_MULTILINE | AG_TEXTBOX_EXPAND, "");
	AG_TextboxSetWordWrap(text, true);

	AG_TextboxSetString(text,
			"This program is free software; you can redistribute it"
			" and/or modify it under the terms of the GNU General"
			" Public License as published by the Free Software"
			" Foundation; either version 2 of the License, or (at your"
			" option) any later version.\n\n"
			"This program is distributed in the hope that it will be"
			" useful, but WITHOUT ANY WARRANTY; without even the"
			" implied warranty of MERCHANTABILITY or FITNESS FOR"
			" A PARTICULAR PURPOSE.  See the GNU General Public"
			" License for more details.");

	return lbox;
}
예제 #3
0
AG_Box *AGOL_Settings::CreateMainButtonBox(void *parent)
{
	AG_Box *bbox;

	bbox = AG_BoxNewHoriz(parent, AG_BOX_HFILL);

	// This empty box positions the buttons to the right
	AG_BoxNewHoriz(bbox, AG_BOX_HFILL);

	AG_ButtonNewFn(bbox, 0, "Cancel", EventReceiver, "%p", 
			RegisterEventHandler((EVENT_FUNC_PTR)&AGOL_Settings::OnCancel));
	AG_ButtonNewFn(bbox, 0, "  OK  ", EventReceiver, "%p", 
			RegisterEventHandler((EVENT_FUNC_PTR)&AGOL_Settings::OnOK));

	return bbox;
}
예제 #4
0
파일: osd.c 프로젝트: FrMo/gravit
void osdInitPlaybackWindow() {
    AG_Box *box;
    view.playbackWindow = osdNewWindow("Quick Controls");
    box = AG_BoxNewHoriz(view.playbackWindow, AG_BOX_EXPAND);
    
    // The labels for Record and Pause are the "longest legnth" versions of the
    // state of the button, so that no button resizing is necessary.
    
    AG_ButtonNewFn(box, 0, "Respawn", osdHandleRespawn, 0);
    
    AG_SpacerNewVert(box);
    
    view.recordButton = AG_ButtonNewFn(box, 0, "Record", osdHandleRecord, 0);
    AG_ButtonNewFn(box, 0, "<<", osdHandleFirst, 0);
    AG_ButtonNewFn(box, AG_BUTTON_REPEAT, "<", osdHandlePrev, 0);
    view.playButton = AG_ButtonNewFn(box, 0, "Pause", osdHandlePlay, 0);
    AG_ButtonNewFn(box, AG_BUTTON_REPEAT, ">", osdHandleNext, 0);
    AG_ButtonNewFn(box, 0, ">>", osdHandleLast, 0);
    
    AG_SpacerNewVert(box);
    
    AG_ButtonNewFn(box, 0, "Quit", osdHandleQuit, 0);
    
    AG_WindowSetPosition(view.playbackWindow, AG_WINDOW_TR, 0);
    AG_WindowShow(view.playbackWindow);
    osdUpdate();
}
예제 #5
0
static int
TestGUI(void *obj, AG_Window *win)
{
	char path[AG_PATHNAME_MAX];
	AG_TestInstance *ti = obj;
	AG_Box *box;
	AG_Textbox *tb;

	someString[0] = '\0';

	AG_GetString(agConfig, "load-path", path, sizeof(path));
	AG_LabelNew(win, 0, "load-path: %s", path);
	AG_GetString(agConfig, "save-path", path, sizeof(path));
	AG_LabelNew(win, 0, "save-path: %s", path);

	/* Tie some globals to the config settings */
	AG_BindInt(agConfig, "some-int", &someInt);
	AG_BindInt(agConfig, "some-bool", &someBool);
	AG_BindString(agConfig, "some-string", someString, sizeof(someString));
	AG_SetInt(agConfig, "some-int", 2345);

	/* Create some widgets */
	AG_NumericalNewInt(win, 0, NULL, "Some int: ", &someInt);
	AG_CheckboxNewInt(win, 0, "Some bool", &someBool);
	tb = AG_TextboxNew(win, AG_TEXTBOX_HFILL, "Some string: ");
	AG_TextboxBindUTF8(tb, someString, sizeof(someString));

	box = AG_BoxNewHoriz(win, AG_BOX_EXPAND);
	{
		AG_ButtonNewFn(box, 0, "Load configuration", LoadConfig, "%p", ti);
		AG_ButtonNewFn(box, 0, "Save configuration", SaveConfig, "%p", ti);
	}
	return (0);
}
예제 #6
0
static void FileMenu_BootMode(AG_Event *event)
{
	AG_Menu *self = (AG_Menu *)AG_SELF();
	AG_MenuItem *item = (AG_MenuItem *)AG_SENDER();
	AG_Window *w;
	AG_Button   *btn[3];
	AG_Box *box;
	AG_Box *box2;
	char *label;
	AG_Label *lbl;

	w = AG_WindowNew(AG_WINDOW_NOMINIMIZE | AG_WINDOW_NOMAXIMIZE | FILEDIALOG_WINDOW_DEFAULT);
	AG_WindowSetMinSize(w, 230, 80);
	label = gettext("Select mode (Notice: If select , reboot.)");
	AG_WindowSetMinSize(w, 230, 80);
	box = AG_BoxNewHorizNS(w, AG_BOX_HFILL);
	AG_WidgetSetSize(box, 230, 32);
	lbl = AG_LabelNew(AGWIDGET(box), AG_LABEL_EXPAND, "%s", label);
	box = AG_BoxNewVert(w, AG_BOX_HFILL);
	AG_WidgetSetSize(box, 230, 32);

	box2 = AG_BoxNewHoriz(box, 0);
	btn[0] = AG_ButtonNewFn (AGWIDGET(box2), 0, gettext("BASIC"), SetBootMode, "%i", FALSE);
	box2 = AG_BoxNewVert(box, 0);
	btn[1] = AG_ButtonNewFn (AGWIDGET(box2), 0, gettext("DOS"), SetBootMode, "%i", TRUE);
	box2 = AG_BoxNewVert(box, 0);
	btn[2] = AG_ButtonNewFn (AGWIDGET(box2), 0, gettext("Cancel"), OnPushCancel, NULL);
    AG_ActionFn(AGWIDGET(w), "window-close", OnPushCancel, NULL);
	AG_WindowSetCaption(w, gettext("Boot Mode"));
	AG_WindowShow(w);

}
예제 #7
0
AG_Box *AGOL_About::CreateLicenseBox(void *parent)
{
	AG_Box     *lbox;
	AG_Textbox *text;

	lbox = AG_BoxNewVert(parent, AG_BOX_EXPAND);
	AG_LabelNewS(lbox, 0, "License");
	lbox = AG_BoxNewHoriz(lbox, AG_BOX_EXPAND);
	AG_BoxSetPadding(lbox, 5);
	AG_BoxSetSpacing(lbox, 5);

#if !AG_VERSION_ATLEAST(1,4,2)
	text = AG_TextboxNewS(lbox, AG_TEXTBOX_MULTILINE | AG_TEXTBOX_EXPAND, "");
#else
	text = AG_TextboxNewS(lbox, AG_TEXTBOX_READONLY | AG_TEXTBOX_MULTILINE | AG_TEXTBOX_EXPAND, "");
#endif

	AG_TextboxSetWordWrap(text, true);

	AG_TextboxSetString(text, license.c_str());

#if !AG_VERSION_ATLEAST(1,4,2)
	AG_SetEvent(text, "textbox-prechg", EventReceiver, "%p",
		RegisterEventHandler((EVENT_FUNC_PTR)&AGOL_About::OnLicensePrechg));

	AG_SetEvent(text, "textbox-postchg", EventReceiver, "%p",
		RegisterEventHandler((EVENT_FUNC_PTR)&AGOL_About::OnLicensePostchg));
#else
	AG_TextboxSetCursorPos(text, 0);
#endif

	return lbox;
}
예제 #8
0
AG_Box *AGOL_Settings::CreateTopOptionsBox(void *parent)
{
	AG_Box *tbox = AG_BoxNewHoriz(parent, AG_BOX_HFILL | AG_BOX_HOMOGENOUS);
	AG_BoxSetPadding(tbox, 0);
	AG_BoxSetSpacing(tbox, 0);

	return tbox;
}
예제 #9
0
AG_Box *AGOL_About::CreateDevBox(void *parent)
{
	AG_Box   *dbox;
	AG_Label *label;

	dbox = AG_BoxNewVert(parent, AG_BOX_HFILL);
	AG_LabelNewS(dbox, 0, "Developed by");
	dbox = AG_BoxNewHoriz(dbox, AG_BOX_EXPAND);
	AG_BoxSetPadding(dbox, 5);
	AG_BoxSetSpacing(dbox, 5);
	dbox = AG_BoxNewHoriz(dbox, AG_BOX_FRAME | AG_BOX_EXPAND);

	label = AG_LabelNewS(dbox, AG_LABEL_EXPAND, 
			"Michael Wood (mailto:[email protected])\n"
			"Russell Rice (mailto:[email protected])");
	AG_LabelJustify(label, AG_TEXT_CENTER);

	return dbox;
}
예제 #10
0
AG_Box *AGOL_Settings::CreateExtraCmdParamsBox(void *parent)
{
	AG_Box *ecpbox;

	ecpbox = AG_BoxNewVert(parent, AG_BOX_HFILL | AG_BOX_FRAME);
	AG_LabelNewS(ecpbox, 0, "Extra command line arguments");
	ecpbox = AG_BoxNewHoriz(ecpbox, AG_BOX_HFILL);
	AG_BoxSetPadding(ecpbox, 5);
	AG_BoxSetSpacing(ecpbox, 5);

	return ecpbox;
}
예제 #11
0
AG_Box *AGOL_Settings::CreateWadDirConfigBox(void *parent)
{
	AG_Box *wdbox;

	wdbox = AG_BoxNewVert(parent, AG_BOX_FRAME);
	AG_LabelNewS(wdbox, 0, "Wad Directories");
	wdbox = AG_BoxNewHoriz(wdbox, 0);
	AG_BoxSetPadding(wdbox, 5);
	AG_BoxSetSpacing(wdbox, 5);

	return wdbox;
}
예제 #12
0
AG_Box *AGOL_Settings::CreateOdamexPathBox(void *parent)
{
	AG_Box *opbox;

	opbox = AG_BoxNewVert(parent, AG_BOX_HFILL | AG_BOX_FRAME);
	AG_LabelNewS(opbox, 0, "Odamex Path");
	opbox = AG_BoxNewHoriz(opbox, AG_BOX_HFILL);
	AG_BoxSetPadding(opbox, 5);
	AG_BoxSetSpacing(opbox, 5);

	return opbox;
}
예제 #13
0
AG_Box *AGOL_About::CreateTopBox(void *parent)
{
	AG_Box         *tbox;
	AG_Box         *box;
	AG_Label       *label;
	AG_DataSource  *pngdata;
	AG_AgarVersion  agv;

	tbox = AG_BoxNewHoriz(parent, 0);

	box = AG_BoxNewHoriz(tbox, 0);

	if((pngdata = AG_OpenConstCore(icon_odalaunch_96, sizeof(icon_odalaunch_96))) != NULL)
	{
		AG_PixmapFromSurface(box, AG_PIXMAP_EXPAND, AG_ReadSurfaceFromPNG(pngdata));
		AG_CloseDataSource(pngdata);
	}

	box = AG_BoxNewVert(tbox, AG_BOX_HFILL);
	label = AG_LabelNewS(box, AG_LABEL_HFILL, "The Odamex Launcher");
	AG_LabelJustify(label, AG_TEXT_CENTER);
	label = AG_LabelNewS(box, AG_LABEL_HFILL, "Copyright (C) 2010-2012 by The Odamex Team");
	AG_LabelJustify(label, AG_TEXT_CENTER);
	label = AG_LabelNew(box, AG_LABEL_HFILL, "Version %d.%d.%d - Protocol Version %d",
			VERSIONMAJOR(VERSION), VERSIONMINOR(VERSION), VERSIONPATCH(VERSION), PROTOCOL_VERSION);

	AG_LabelJustify(label, AG_TEXT_CENTER);
	label = AG_LabelNewS(box, AG_LABEL_HFILL, "http://www.odamex.net");
	AG_LabelJustify(label, AG_TEXT_CENTER);

	AG_GetVersion(&agv);
	label = AG_LabelNew(parent, AG_LABEL_HFILL, "Built with Agar, Version %d.%d.%d",
			agv.major, agv.minor, agv.patch);
	AG_LabelJustify(label, AG_TEXT_CENTER);

	label = AG_LabelNew(parent, AG_LABEL_HFILL, "(%s)", agv.release);
	AG_LabelJustify(label, AG_TEXT_CENTER);

	return tbox;
}
예제 #14
0
파일: compositing.c 프로젝트: varialus/agar
static int
TestGUI(void *obj, AG_Window *win)
{
	char path[AG_PATHNAME_MAX];
	AG_Slider *sl;
	AG_Box *hb;

	hb = AG_BoxNewHoriz(win, AG_BOX_HFILL);
	if (!AG_ConfigFile("load-path", "agar", "bmp", path, sizeof(path))) {
		AG_PixmapFromBMP(hb, 0, path);
		AG_PixmapFromBMP(hb, 0, path);
		AG_PixmapFromBMP(hb, 0, path);
	}
	hb = AG_BoxNewHoriz(win, AG_BOX_HFILL);
	{
		AG_LabelNew(hb, 0, "Window Opacity: ");
		sl = AG_SliderNewFlt(hb, AG_SLIDER_HORIZ, AG_SLIDER_HFILL,
		    &opval, &opmin, &opmax);
		AG_SetEvent(sl, "slider-changed", Changed, "%p", win);
	}
	AG_ButtonNewFn(win, AG_BUTTON_HFILL, "Test AG_WINDOW_FADEIN", Fadein, NULL);
	return (0);
}
예제 #15
0
AG_Box *AGOL_About::CreateTopBox(void *parent)
{
	AG_Box         *tbox;
	AG_Box         *box;
	AG_Label       *label;
	SDL_Surface    *sf;
	AG_AgarVersion  agv;

	tbox = AG_BoxNewHoriz(parent, 0);

	box = AG_BoxNewHoriz(tbox, 0);
	sf = IMG_Load_RW(SDL_RWFromConstMem(icon_odalaunch_96, sizeof(icon_odalaunch_96)), 1);
	if(sf)
		AG_PixmapFromSurface(box, AG_PIXMAP_EXPAND, AG_SurfaceFromSDL(sf));

	box = AG_BoxNewVert(tbox, 0);
	label = AG_LabelNewS(box, AG_LABEL_HFILL, "The Odamex Launcher");
	AG_LabelJustify(label, AG_TEXT_CENTER);
	label = AG_LabelNewS(box, AG_LABEL_HFILL, "Copyright (C) 2010 by The Odamex Team");
	AG_LabelJustify(label, AG_TEXT_CENTER);
	label = AG_LabelNew(box, AG_LABEL_HFILL, "Version %d.%d.%d - Protocol Version %d",
			VERSIONMAJOR(VERSION), VERSIONMINOR(VERSION), VERSIONPATCH(VERSION), PROTOCOL_VERSION);

	AG_LabelJustify(label, AG_TEXT_CENTER);
	label = AG_LabelNewS(box, AG_LABEL_HFILL, "http://www.odamex.net");
	AG_LabelJustify(label, AG_TEXT_CENTER);

	AG_GetVersion(&agv);
	label = AG_LabelNew(parent, AG_LABEL_HFILL, "Built with Agar, Version %d.%d.%d",
			agv.major, agv.minor, agv.patch);
	AG_LabelJustify(label, AG_TEXT_CENTER);

	label = AG_LabelNew(parent, AG_LABEL_HFILL, "(%s)", agv.release);
	AG_LabelJustify(label, AG_TEXT_CENTER);

	return tbox;
}
예제 #16
0
파일: osd.c 프로젝트: FrMo/gravit
void osdInitIntroWindow() {
    AG_Window *w = osdNewWindow("Welcome to Gravit!");
    
    AG_Box *vBox = AG_BoxNewVert(w, 0);
    AG_Box *hBox = AG_BoxNewHoriz(w, 0);
    AG_Label *text;
    AG_BoxSetSpacing(vBox, 10);
    
    text = AG_LabelNew(vBox, 0, 0);
    AG_LabelText(text, "Gravit is a free, visually stunning gravity simulator, where you can spend endless\ntime experimenting with various configurations of simulated universes.\n\nQuick Start:\n\n - Click on RESPAWN to start a new simulation.\n - Click on PLAY to replay a recording\n - Click on RECORD to resume recording\n - Hold down a mouse button and move it around to change your perspective.\n - Use the A and Z keys, or the scroll wheel to zoom in and out.\n");
    AG_WidgetSetSize(text, 200, 100);
    
    // AG_Checkbox *showAgain = AG_CheckboxNew(vBox, AG_CHECKBOX_SET, "Show this window on startup");
    AG_ButtonNewFn(hBox, 0, "  OK  ", AG_WindowCloseGenEv, "%p", w);
    
    AG_WindowShow(w);
}
예제 #17
0
static void ConfigMenuBright(struct gui_disp *cfg, AG_NotebookTab *parent)
{
	AG_Slider *slider;
	AG_Box *box;
	AG_Box *vbox;
	AG_Label *lbl;

	lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("Bright"));
//	slider = AG_SliderNewFltR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &fBright0, 0.0f, 1.0f);
	slider = AG_SliderNew(AGWIDGET(parent), AG_SLIDER_HORIZ, AG_SLIDER_HFILL);
        AG_SetUint16(slider, "value", cfg->nBrightness);
        AG_SetUint16(slider, "min", 0);
        AG_SetUint16(slider, "max", 255);
#ifdef USE_OPENGL
	AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeBright, "%p", cfg);
#endif /* USE_OPENGL */
	box = AG_BoxNewHoriz(AGWIDGET(parent), AG_BOX_HFILL);
}
예제 #18
0
ODA_GuiOptionsBox *AGOL_Settings::CreateGuiOptionsBox(void *parent)
{
	char               drvList[128];
	AG_Box            *vdbox;
	ODA_GuiOptionsBox *gbox = new ODA_GuiOptionsBox;

	gbox->optionsBox = AG_BoxNewVert(parent, AG_BOX_FRAME);
	AG_LabelNewS(gbox->optionsBox, 0, "Gui Options");
	gbox->optionsBox = AG_BoxNewVert(gbox->optionsBox, AG_BOX_EXPAND);
	AG_BoxSetPadding(gbox->optionsBox, 5);
	AG_BoxSetSpacing(gbox->optionsBox, 5);

	// Video Driver Option
	vdbox = AG_BoxNewHoriz(gbox->optionsBox, AG_BOX_HFILL);
	AG_BoxSetPadding(vdbox, 0);
	AG_BoxSetSpacing(vdbox, 0);

	gbox->driverLabel = AG_LabelNewS(vdbox, 0, "Video Driver:   ");

	gbox->driverCombo = AG_UComboNew(vdbox, AG_UCOMBO_HFILL);
	AG_UComboSizeHint(gbox->driverCombo, "XXXXXXXXXXXX", 3);

	AG_ListDriverNames(drvList, 128);

	if(strlen(drvList) > 0)
	{
		size_t oldpos = 0;
		size_t pos = 0;

		while(pos != string::npos)
		{
			AG_TlistItem *item;

			pos = string(drvList).find(' ', oldpos);
			item = AG_TlistAdd(gbox->driverCombo->list, NULL, string(drvList).substr(oldpos, pos - oldpos).c_str());
			if(string(item->text) == string(agDriverOps->name))
				AG_ButtonTextS(gbox->driverCombo->button, item->text);
			oldpos = pos + 1;
		}
	}
	// End - Video Driver Option

	return gbox;
}
예제 #19
0
파일: vg_text.c 프로젝트: varialus/agar
static void
SelectFontDlg(AG_Event *event)
{
	VG_Text *vt = AG_PTR(1);
	VG_View *vv = AG_PTR(2);
	AG_Window *win, *winParent;
	AG_FontSelector *fs;
	AG_Box *hBox;

	win = AG_WindowNew(0);
	AG_WindowSetCaptionS(win, _("Font selection"));

	fs = AG_FontSelectorNew(win, AG_FONTSELECTOR_EXPAND);

	hBox = AG_BoxNewHoriz(win, AG_BOX_HFILL|AG_BOX_HOMOGENOUS);
	AG_ButtonNewFn(hBox, 0, _("OK"), SelectFont, "%p,%p,%p", vt, win, fs);
	AG_ButtonNewFn(hBox, 0, _("Close"), AG_WindowCloseGenEv, "%p", win);

	AG_WindowShow(win);
	if ((winParent = AG_ParentWindow(vv)) != NULL)
		AG_WindowAttach(winParent, win);
}
예제 #20
0
static void VolumeMenu(AG_NotebookTab *parent, struct gui_sound *cfg)
{
	AG_Slider *slider;
	AG_Box *box;
	AG_Box *vbox;
	AG_Label *lbl;

	lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("Main Volume"));
	slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->iTotalVolume), 0, 128);
	AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeTotalVolume, "%p", cfg);

	box = AG_BoxNewHoriz(AGWIDGET(parent), AG_BOX_HFILL);
	AG_WidgetSetSize(AGWIDGET(box), 320, 12);
	lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("PSG"));
	slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->nPSGVolume), -40, 12);
	AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg);

	lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("FM"));
	slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->nFMVolume), -40, 12);
	AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg);

	lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("BEEP"));
	slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->nBeepVolume), -35, 12);
	AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg);

	lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("CMT"));
	slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->nCMTVolume), -35, 6);
	AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg);

	lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("SFX"));
	slider = AG_SliderNewIntR(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->nWaveVolume), -35, 12);
	AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg);

	lbl = AG_LabelNew(AGWIDGET(parent), 0, "%s", gettext("Channel Separation"));
	slider = AG_SliderNewUint32R(AGWIDGET(parent),AG_SLIDER_HORIZ, AG_SLIDER_HFILL, &(cfg->uChSeparation), 0, 16);
	AG_SetEvent(AGOBJECT(slider), "slider-changed", OnChangeVolume, "%p", cfg);

}
예제 #21
0
파일: config.c 프로젝트: LiberatorUSA/GUCEF
static AG_Window *
DEV_ConfigWindow(AG_Config *cfg)
{
	char path[AG_PATHNAME_MAX];
	AG_Window *win;
	AG_Box *hb;
	AG_Textbox *tbox;
/*	AG_Checkbox *cb; */
	AG_Notebook *nb;
	AG_NotebookTab *tab;

	if ((win = AG_WindowNewNamedS(0, "DEV_Config")) == NULL) {
		return (NULL);
	}
	AG_WindowSetCaptionS(win, _("Agar settings"));
	AG_WindowSetCloseAction(win, AG_WINDOW_DETACH);

	nb = AG_NotebookNew(win, AG_NOTEBOOK_HFILL|AG_NOTEBOOK_VFILL);
	tab = AG_NotebookAdd(nb, _("Video"), AG_BOX_VERT);
	{
		AG_NumericalNewIntR(tab, 0, "%", _("Screenshot quality: "),
		    &agScreenshotQuality, 1, 100);
	}

	tab = AG_NotebookAdd(nb, _("GUI"), AG_BOX_VERT);
	{
		AG_CheckboxNewInt(tab, 0, _("Built-in key composition"),
		    &agTextComposition);
		AG_CheckboxNewInt(tab, 0, _("Bidirectional"),
		    &agTextBidi);
		
		AG_SeparatorNewHoriz(tab);
		AG_LabelNewS(tab, 0, _("Timer settings (milliseconds):"));
		AG_NumericalNewIntR(tab, 0, NULL, _("Double click delay: "),
		    &agMouseDblclickDelay, 1, 10000);
		AG_NumericalNewIntR(tab, 0, NULL, _("Cursor spin delay: "),
		    &agMouseSpinDelay, 1, 10000);
		AG_NumericalNewIntR(tab, 0, NULL, _("Cursor spin interval: "),
		    &agMouseSpinIval, 1, 10000);
		AG_NumericalNewIntR(tab, 0, NULL, _("Key repeat delay: "),
		    &agKbdDelay, 1, 1000);
		AG_NumericalNewIntR(tab, 0, NULL, _("Key repeat interval: "),
		    &agKbdRepeat, 1, 500);
	}

	tab = AG_NotebookAdd(nb, _("Directories"), AG_BOX_VERT);
	{
		hb = AG_BoxNewHoriz(tab, AG_BOX_HFILL);
		tbox = AG_TextboxNewS(hb, AG_TEXTBOX_HFILL, _("Temporary file directory: "));
		AG_GetString(agConfig, "tmp-path", path, sizeof(path));
		AG_TextboxSetString(tbox, path);
		AG_SetEvent(tbox, "textbox-return", SetPath, "%s", "tmp-path");
		AG_TextboxSizeHint(tbox, "XXXXXXXXXXXXXXXXXXXX");
		AG_ButtonNewFn(hb, 0, "...", SelectPath, "%s,%p", "tmp-path", tbox);

		hb = AG_BoxNewHoriz(tab, AG_BOX_HFILL);
		tbox = AG_TextboxNewS(hb, AG_TEXTBOX_HFILL, _("Dataset save directory: "));
		AG_GetString(agConfig, "save-path", path, sizeof(path));
		AG_TextboxSetString(tbox, path);
		AG_SetEvent(tbox, "textbox-return", SetPath, "%s", "save-path");
		AG_ButtonNewFn(hb, 0, "...", SelectPath, "%s,%p", "save-path", tbox);
	
		hb = AG_BoxNewHoriz(tab, AG_BOX_HFILL);
		tbox = AG_TextboxNewS(hb, AG_TEXTBOX_HFILL, _("Dataset search path: "));
		AG_GetString(agConfig, "load-path", path, sizeof(path));
		AG_TextboxSetString(tbox, path);
		AG_SetEvent(tbox, "textbox-return", SetPath, "%s", "load-path");
	
		hb = AG_BoxNewHoriz(tab, AG_BOX_HFILL);
		tbox = AG_TextboxNewS(hb, AG_TEXTBOX_HFILL, _("Font search path: "));
		AG_GetString(agConfig, "font-path", path, sizeof(path));
		AG_TextboxSetString(tbox, path);
		AG_SetEvent(tbox, "textbox-return", SetPath, "%s", "font-path");
	}
#if 0
	tab = AG_NotebookAdd(nb, _("Colors"), AG_BOX_VERT);
	{
		AG_Pane *hPane;
		AG_HSVPal *hsv;
		AG_Tlist *tl;
		AG_TlistItem *it;
		AG_Label *lbl;
		int i;
	
		hPane = AG_PaneNew(tab, AG_PANE_HORIZ, AG_PANE_EXPAND);
		{
			tl = AG_TlistNew(hPane->div[0], AG_TLIST_EXPAND);
			AG_TlistSizeHint(tl, "Tileview text background", 10);
			for (i = 0; i < LAST_COLOR; i++) {
				it = AG_TlistAdd(tl, NULL, _(agColorNames[i]));
				it->p1 = &agColors[i];
			}
			hsv = AG_HSVPalNew(hPane->div[1], AG_HSVPAL_EXPAND);
			AG_SetEvent(hsv, "h-changed", SetColor, "%p", tl);
			AG_SetEvent(hsv, "sv-changed", SetColor, "%p", tl);
			AG_SetEvent(tl, "tlist-selected", BindSelectedColor,
			    "%p", hsv);
		}
		
		lbl = AG_LabelNew(tab, 0,
		    _("Warning: Some color changes will not "
		      "take effect until %s is restarted."), agProgName);
		AG_LabelSetPaddingLeft(lbl, 10);
		AG_LabelSetPaddingRight(lbl, 10);
		
		hb = AG_BoxNewHoriz(tab, AG_BOX_HOMOGENOUS|AG_BOX_HFILL);
		{
			AG_ButtonNewFn(hb, 0, _("Load scheme"),
			    LoadColorSchemeDlg, NULL);
			AG_ButtonNewFn(hb, 0, _("Save scheme"),
			    SaveColorSchemeDlg, NULL);
		}
	}
#endif

#ifdef AG_DEBUG
	tab = AG_NotebookAdd(nb, _("Debug"), AG_BOX_VERT);
	{
		AG_NumericalNewIntR(tab, 0, NULL, _("Debug level: "),
		    &agDebugLvl, 0, 255);
	}
#endif

	hb = AG_BoxNewHoriz(win, AG_BOX_HOMOGENOUS|AG_BOX_HFILL);
	{
		AG_ButtonNewFn(hb, 0, _("Close"), AGWINDETACH(win));
		AG_ButtonNewFn(hb, 0, _("Save"), SaveConfig, NULL);
	}
	return (win);
}
예제 #22
0
void OnConfigDisplayMenu(AG_Event *event)
{
	AG_MenuItem *self = (AG_MenuItem *)AG_SELF();
	AG_Window *win;
	AG_Notebook *note;
	AG_Notebook *note2;

	AG_NotebookTab *tab;
	AG_NotebookTab *tab2;
	AG_Box *box;
	AG_Button *btn;
        struct gui_disp *cfg;
	int i, num;
   
        cfg = (struct gui_disp *)malloc(sizeof(struct gui_disp));
        if(cfg == NULL) return;
	{
	  LockVM();
	  cfg->nDrawFPS = configdat.nDrawFPS;
	  cfg->nEmuFPS = configdat.nEmuFPS;
	  cfg->nBrightness = configdat.nBrightness;
	  cfg->nRenderMethod = configdat.nRenderMethod;
	  cfg->uWidth = configdat.uWidth;
	  cfg->uHeight = configdat.uHeight;
	  cfg->bFullScan = configdat.bFullScan;
	  cfg->bFullScanFS = configdat.bFullScanFS;
	  cfg->bSmoosing = configdat.bSmoosing;
	  cfg->bUseSIMD = configdat.bUseSIMD; 
#ifdef _USE_OPENCL
	  cfg->bUseOpenCL = configdat.bUseOpenCL;
	  cfg->nCLGlobalWorkThreads = configdat.nCLGlobalWorkThreads;
	  cfg->bCLSparse = configdat.bCLSparse;
	  cfg->nCLDeviceNum = configdat.nCLDeviceNum;
	  cfg->nCLPlatformNum = configdat.nCLPlatformNum;
	  cfg->bCLInteropGL = configdat.bCLInteropGL;
	  for(i = 0; i <= 8; i++) cfg->sDeviceName[i] = NULL;
	  if(cldraw == NULL) {
	    num = 8;
	  } else {
	    num = cldraw->GetDevices();
	  }
	  if(num >= 8) num = 8;
	  if(num <= 0) num = 0;
	  for(i = 0; i < num; i++) {
	    cfg->sDeviceName[i] = malloc(96 * sizeof(char));
	    cfg->sDeviceName[i][0] = '\0';
	    if(cldraw == NULL) {
	      snprintf(cfg->sDeviceName[i], 94, "Processor #%d", i);
	    } else {
	      char sName[64];
	      char sType[16];
	      cldraw->GetDeviceName(sName, 64, i);
	      cldraw->GetDeviceType(sType, 16, i);
	      snprintf(cfg->sDeviceName[i], 94, "%s(%s)", sType, sName);
	    }
	  }
	  cfg->sDeviceName[8] = NULL;
#endif
	  UnlockVM();
	}

	win= AG_WindowNew(DIALOG_WINDOW_DEFAULT);
        note = AG_NotebookNew(AGWIDGET(win), AG_NOTEBOOK_HFILL);

        {
    	tab = AG_NotebookAddTab(note, gettext("Screen"), AG_BOX_HORIZ);
    	OnConfigMenuScreen(cfg, tab);
#ifdef USE_OPENGL
    	tab = AG_NotebookAddTab(note, gettext("Display"), AG_BOX_HORIZ);
    	ConfigMenuBright(cfg, tab);
#endif /* USE_OPENGL */

#ifdef _USE_OPENCL
    	tab = AG_NotebookAddTab(note, gettext("OpenCL"), AG_BOX_HORIZ);
    	ConfigMenuOpenCL(cfg, tab);
#endif /* USE_OPENGL */
    }
    box = AG_BoxNewHoriz(AGWIDGET(win), AG_BOX_HFILL);
    AG_WidgetSetSize(AGWIDGET(box), 320, 24);
    {
    	AG_Box *vbox;
        vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL);
    	btn = AG_ButtonNewFn(AGWIDGET(box), 0, gettext("OK"), OnConfigApplyDisp, "%p", cfg);
        vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL);
        AG_WidgetSetSize(AGWIDGET(vbox), 80, 24);
        vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL);
    	btn = AG_ButtonNewFn(AGWIDGET(box), 0, gettext("Cancel"), OnPushCancel2, "%p", cfg);
    }
    AG_SetEvent(win, "window-close", OnPushCancel2, "%p", cfg);
    AG_WindowSetCaption(win, gettext("Display"));
    AG_WindowShow(win);
}
예제 #23
0
static void OnConfigMenuScreen(struct gui_disp *cfg, AG_NotebookTab *parent)
{
	AG_Radio *radio;
	AG_Checkbox *check;
	AG_Numerical *fps;
	AG_Box *box;
	AG_Box *box2;
        AG_Combo *combo;
        AG_TlistItem *TlistItem[RENDERING_END];
	int i;
	int limit;
	
	box = AG_BoxNewHoriz(AGWIDGET(parent), AG_BOX_VFILL);
	{
		radio = AG_RadioNewFn(AGWIDGET(box), 0, ScreenSizeName, OnChangeScreenReso, "%p", cfg);
		limit = sizeof(ScreenSizeHeight) / sizeof(WORD);
		for(i = 0; i <= limit; i++){
		  if((ScreenSizeWidth[i] == cfg->uWidth) && (ScreenSizeHeight[i] == cfg->uHeight)) break;
		}
		if(i >= limit) i = 2;
		AG_SetInt(radio, "value", i);
		box = AG_BoxNewVert(AGWIDGET(parent), AG_BOX_HFILL);
		fps = AG_NumericalNewS(AGWIDGET(box), AG_NUMERICAL_HFILL, NULL ,gettext("Display rate"));
		AG_BindUint16(fps, "value", &(cfg->nDrawFPS));
		{
		  AG_SetInt(fps, "min", 2);
		  AG_SetInt(fps, "max", 75);
		  AG_SetInt(fps, "inc", 1);
		}

		fps = AG_NumericalNewS(AGWIDGET(box), AG_NUMERICAL_HFILL, NULL ,gettext("Emulation rate"));
		AG_BindUint16(fps, "value", &(cfg->nEmuFPS));
		{
		  AG_SetInt(fps, "min", 2);
		  AG_SetInt(fps, "max", 75);
		  AG_SetInt(fps, "inc", 1);
		}

	   
		box2 = AG_BoxNewHoriz(AGWIDGET(box), AG_BOX_HFILL);
		combo = AG_ComboNewS(AGWIDGET(box2), AG_COMBO_SCROLLTOSEL | AG_COMBO_HFILL, gettext("Rendering Method"));
	        AG_ComboSizeHint(combo, "XXXXXXXXXXXXXX", RENDERING_END); 
	        TlistItem[0] = AG_TlistAddPtrHead(combo->list, NULL, gettext("Full Draw"),   (void *)&RenderMethodsList[0]);
	        TlistItem[1] = AG_TlistAddPtr(combo->list,     NULL, gettext("Diff Block"),  (void *)&RenderMethodsList[1]);
	        TlistItem[2] = AG_TlistAddPtr(combo->list,     NULL, gettext("Diff Raster"), (void *)&RenderMethodsList[2]);
	        for(i = RENDERING_FULL; i < RENDERING_END; i++) {
		   if(i == cfg->nRenderMethod) {
			AG_ComboSelect(combo, TlistItem[i]);
		   }
		}
		AG_SetEvent(combo, "combo-selected", RenderMethodSelected, "%p", cfg);
	   
		box2 = AG_BoxNewHoriz(AGWIDGET(box), AG_BOX_HFILL);
		check = AG_CheckboxNewInt(AGWIDGET(box2), AG_CHECKBOX_HFILL, gettext("Full Scan (15KHz)"), &(cfg->bFullScan));
		box2 = AG_BoxNewHoriz(AGWIDGET(box), AG_BOX_HFILL);
		check = AG_CheckboxNewInt(AGWIDGET(box2), AG_CHECKBOX_HFILL, gettext("SMOOSING"), &(cfg->bSmoosing));
		box2 = AG_BoxNewHoriz(AGWIDGET(box), AG_BOX_HFILL);
		check = AG_CheckboxNewInt(AGWIDGET(box2), AG_CHECKBOX_HFILL, gettext("Use OpenCL(Need REBOOT)"), &(cfg->bUseOpenCL));
		box2 = AG_BoxNewHoriz(AGWIDGET(box), AG_BOX_HFILL);
		check = AG_CheckboxNewInt(AGWIDGET(box2), AG_CHECKBOX_HFILL, gettext("Use SIMD instructions(Need REBOOT)"), &(cfg->bUseSIMD));
	}
}
예제 #24
0
void OnConfigSoundMenu(AG_Event *event)
{
	AG_MenuItem *self = (AG_MenuItem *)AG_SELF();
	AG_Window *win;
	AG_Notebook *note;
	AG_Notebook *note2;

	AG_NotebookTab *tab;
	AG_NotebookTab *tab2;
	AG_Box *box;
	AG_Button *btn;
	struct gui_sound *cfg;
	
	cfg = malloc(sizeof(struct gui_sound));
	if(cfg == NULL) return;
	{
	  cfg->iTotalVolume = configdat.iTotalVolume;
	  cfg->nFMVolume = configdat.nFMVolume;
	  cfg->nPSGVolume = configdat.nPSGVolume;
	  cfg->nBeepVolume = configdat.nBeepVolume;
	  cfg->nCMTVolume = configdat.nCMTVolume;
	  cfg->nWaveVolume = configdat.nWaveVolume;
	  cfg->uChSeparation = configdat.uChSeparation;
	  cfg->nSampleRate = configdat.nSampleRate;
	  cfg->nSoundBuffer = configdat.nSoundBuffer;
	  cfg->nBeepFreq = configdat.nBeepFreq;
	  cfg->bFMHQmode = configdat.bFMHQmode;
	  cfg->nStereoOut = configdat.nStereoOut;
	  cfg->bTapeMon = configdat.bTapeMon;
	  cfg->bOPNEnable = configdat.bOPNEnable;
	  cfg->bWHGEnable = configdat.bWHGEnable;
	  cfg->bTHGEnable = configdat.bTHGEnable;
#ifdef FDDSND
	  cfg->bFddSound = configdat.bFddSound;
#endif
	}

	win= AG_WindowNew(DIALOG_WINDOW_DEFAULT);

	note = AG_NotebookNew(AGWIDGET(win), AG_NOTEBOOK_HFILL);
	{
	  tab = AG_NotebookAddTab(note, gettext("Volume"), AG_BOX_VERT);
	  VolumeMenu(tab, cfg);
	  tab = AG_NotebookAddTab(note, gettext("Rendering"), AG_BOX_HORIZ);
	  SoundMenu(tab, cfg);
	  tab = AG_NotebookAddTab(note, gettext("Misc"), AG_BOX_HORIZ);
	  SoundMenu2(tab, cfg);
	}
	box = AG_BoxNewHoriz(AGWIDGET(win), AG_BOX_HFILL);
	AG_WidgetSetSize(AGWIDGET(box), 320, 24);
	{
	  AG_Box *vbox;
	  vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL);
	  btn = AG_ButtonNewFn(AGWIDGET(box), 0, gettext("OK"), OnConfigApplySound, "%p", cfg);
	  vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL);
	  AG_WidgetSetSize(AGWIDGET(vbox), 80, 24);
	  vbox = AG_BoxNewVert(AGWIDGET(box), AG_BOX_VFILL);
	  btn = AG_ButtonNewFn(AGWIDGET(box), 0, gettext("Cancel"), OnPushCancel2, "%p", cfg);
	}
	AG_SetEvent(win, "window-close", OnPushCancel2, "%p", cfg);
	AG_WindowSetCaption(win, gettext("Sound Preferences"));
	AG_WindowShow(win);
}
예제 #25
0
MenuOptions::MenuOptions():
			speed_(CONFIG->speed()),
			visible_presumption_(CONFIG->visible_presumption()),
			fullscreen_(CONFIG->fullscreen()),
			sound_(CONFIG->sound()){
	AG_Box * item;

	// nadpis
	createHeading("Options");

	// jazyk
	item = createItem("Language");
// TODO u combo

	// klavesy
	item = createItem("Controls");
	AG_SetEvent(item, "window-mousebuttondown",
			MenuOptionsControls::create, 0);

	// rychlost hry
	item = createItemHoriz("Game speed");
	AG_AddEvent(items_.back(), "window-keydown", handlerIntItem,
		"%p,%i,%i", &speed_,
		CONFIG_SPEED_MIN, CONFIG_SPEED_MAX);

	AG_NumericalNewIntR(item, 0, 0, 0, &speed_,
		CONFIG_SPEED_MIN, CONFIG_SPEED_MAX);

	// viditelna presumpce
	item = createItemHoriz("Explosion presumptions");
	AG_AddEvent(items_.back(), "window-keydown", handlerBoolItem,
		"%p", &visible_presumption_);

	item = AG_BoxNewHoriz(item, AG_BOX_HOMOGENOUS | AG_BOX_HFILL);
	AG_BoxSetPadding(item, 0);
	AG_SpacerNewVert(item);
	AG_CheckboxNewInt(item, 0, "  ", &visible_presumption_);

	// fullscreen
	item = createItemHoriz("Play in fullscreen");
	AG_AddEvent(items_.back(), "window-keydown", handlerBoolItem,
		"%p", &fullscreen_);

	item = AG_BoxNewHoriz(item, AG_BOX_HOMOGENOUS | AG_BOX_HFILL);
	AG_BoxSetPadding(item, 0);
	AG_SpacerNewVert(item);
	AG_CheckboxNewInt(item, 0, "  ", &fullscreen_);

	// zvuk
	item = createItemHoriz("Sound enabled");
	AG_AddEvent(items_.back(), "window-keydown", handlerBoolItem,
		"%p", &sound_);

	item = AG_BoxNewHoriz(item, AG_BOX_HOMOGENOUS | AG_BOX_HFILL);
	AG_BoxSetPadding(item, 0);
	AG_SpacerNewVert(item);
	AG_CheckboxNewInt(item, 0, "  ", &sound_);


	// back
	item = createItem("Save");
	AG_SetEvent(item, "window-mousebuttondown", handlerBack, 0);

	AG_SpacerNewHoriz(win);
}