Beispiel #1
0
/* ---------------------------------------------------------------------
 * TerminalNew
 * Create a terminal window
 * ---------------------------------------------------------------------
 */
CUIWINDOW*
TerminalNew(CUIWINDOW* parent, const wchar_t* text, int x, int y, int w, int h,
           int id, int sflags, int cflags)
{
	if (parent)
	{
		CUIWINDOW* terminal;
		int i;
		int col;
		int flags = sflags | CWS_TABSTOP | CWS_BORDER;
		flags &= ~(cflags);

		terminal = WindowNew(parent, x, y, w, h, flags);
		terminal->Class = _T("TERMINAL");
		WindowSetId           (terminal, id);
		WindowColScheme       (terminal, _T("TERMINAL"));
		WindowSetNcPaintHook  (terminal, TerminalNcPaintHook);
		WindowSetPaintHook    (terminal, TerminalPaintHook);
		WindowSetKeyHook      (terminal, TerminalKeyHook);
		WindowSetSetFocusHook (terminal, TerminalSetFocusHook);
		WindowSetKillFocusHook(terminal, TerminalKillFocusHook);
		WindowSetSizeHook     (terminal, TerminalSizeHook);
		WindowSetTimerHook    (terminal, TerminalTimerHook);
		WindowSetVScrollHook  (terminal, TerminalVScrollHook);
		WindowSetDestroyHook  (terminal, TerminalDestroyHook);
		WindowSetLayoutHook   (terminal, TerminalLayoutHook);
		col = (terminal->Color.WndTxtColor << 4) + terminal->Color.WndColor;

		terminal->InstData = (TERMINALDATA*) malloc(sizeof(TERMINALDATA));
		((TERMINALDATA*)terminal->InstData)->SetFocusHook    = NULL;
		((TERMINALDATA*)terminal->InstData)->KillFocusHook   = NULL;
                ((TERMINALDATA*)terminal->InstData)->PreKeyHook      = NULL;   
                ((TERMINALDATA*)terminal->InstData)->PostKeyHook     = NULL;  
		((TERMINALDATA*)terminal->InstData)->CoProcExitHook  = NULL;
		((TERMINALDATA*)terminal->InstData)->FirstLine       = 0;
		((TERMINALDATA*)terminal->InstData)->YCursor         = 0;
		((TERMINALDATA*)terminal->InstData)->XCursor         = 0;
		((TERMINALDATA*)terminal->InstData)->InputState      = STATE_NORMAL;
		((TERMINALDATA*)terminal->InstData)->InputPos        = 0;
		((TERMINALDATA*)terminal->InstData)->CurAttr         = col;
		((TERMINALDATA*)terminal->InstData)->HasFocus        = FALSE;
		((TERMINALDATA*)terminal->InstData)->CoProc          = NULL;

		for(i = 0; i < MAX_TERMLINES; i++)
		{
			((TERMINALDATA*)terminal->InstData)->Lines[i] = 
				(wchar_t*) malloc((MAX_TERMCOLS + 1) * sizeof(wchar_t));
			((TERMINALDATA*)terminal->InstData)->Colors[i] = 
				(BYTE*) malloc((MAX_TERMCOLS + 1) * sizeof(BYTE));

			wmemset(((TERMINALDATA*)terminal->InstData)->Lines[i],_T(' '),MAX_TERMCOLS);
			memset(((TERMINALDATA*)terminal->InstData)->Colors[i], col, MAX_TERMCOLS);
		}

		WindowSetText(terminal, text);

		return terminal;
	}
	return NULL;
}
Beispiel #2
0
/* ---------------------------------------------------------------------
 * ShellDlgNew
 * Create a new dialog instance
 * ---------------------------------------------------------------------
 */
CUIWINDOW*
ShellDlgNew(CUIWINDOW* parent, CUIRECT* rc, int sflags, int cflags)
{
	if (parent)
	{
		CUIWINDOW* dlg;
		int flags = sflags | CWS_POPUP;
		flags &= ~(cflags | CWS_BORDER);

		dlg = WindowNew(parent, rc->X, rc->Y, rc->W, rc->H, flags);

		dlg->Class = _T("SHELL_DLG");
		WindowColScheme(dlg, _T("TERMINAL"));
		WindowSetCreateHook(dlg, ShellDlgCreateHook);
		WindowSetDestroyHook(dlg, ShellDlgDestroyHook);
		WindowSetSizeHook(dlg, ShellDlgSizeHook);
		WindowSetKeyHook(dlg, ShellDlgKeyHook);

		dlg->InstData = (SHELLDLGDATA*) malloc(sizeof(SHELLDLGDATA));
		((SHELLDLGDATA*)dlg->InstData)->pCommand = NULL;
		((SHELLDLGDATA*)dlg->InstData)->pTitle   = NULL;
		((SHELLDLGDATA*)dlg->InstData)->ExitCode = 0;
		((SHELLDLGDATA*)dlg->InstData)->DoAutoClose = FALSE;

		return dlg;
	}
	return NULL;
}
Beispiel #3
0
/*
 * call-seq: 
 *   new (display)    -> Window,
 *   new ()           -> Window
 *
 * Creates a new Window object. Can be called with 
 * either one or zero arguments. The argument is 
 * expected to be an object of the Display class.
 * If not provided, it will default to the default
 * Display.
 */
VALUE window_new(int argc, VALUE* argv, VALUE self) {
  Window_t* win;
  Display_t* d;
  switch(argc) {
    case 0:
      win = WindowNew(DisplayNew(getenv("DISPLAY")));
      break;
    case 1:
      Data_Get_Struct(argv[0], Display_t, d);
      win = WindowNew(d);
      break;
    default:
      rb_raise(rb_eRuntimeError, "wrong number of arguments, %d for 0 or 1", argc);
      return self;
  }
  VALUE tdata = Data_Wrap_Struct(self, 0, WindowDispose, win);

  VALUE args[2];
  args[0] = INT2FIX(800);
  args[1] = INT2FIX(600);

  rb_obj_call_init(tdata, 2, args);
  return tdata;
}
Beispiel #4
0
/* ---------------------------------------------------------------------
 * ListboxNew
 * Create a list box dialog control
 * ---------------------------------------------------------------------
 */
CUIWINDOW*
ListboxNew(CUIWINDOW* parent, const wchar_t* text, int x, int y, int w, int h, 
           int id, int sflags, int cflags)
{
	if (parent)
	{
		CUIWINDOW* listbox;
		int flags = sflags | CWS_TABSTOP | CWS_BORDER;
		flags &= ~(cflags);

		listbox = WindowNew(parent, x, y, w, h, flags);
		listbox->Class = _T("LISTBOX");
		WindowSetId(listbox, id);
		WindowSetNcPaintHook(listbox, ListboxNcPaintHook);
		WindowSetPaintHook(listbox, ListboxPaintHook);
		WindowSetKeyHook(listbox, ListboxKeyHook);
		WindowSetSetFocusHook(listbox, ListboxSetFocusHook);
		WindowSetKillFocusHook(listbox, ListboxKillFocusHook);
		WindowSetMButtonHook(listbox, ListboxMButtonHook);
		WindowSetVScrollHook(listbox, ListboxVScrollHook);
		WindowSetSizeHook(listbox, ListboxSizeHook);
		WindowSetDestroyHook(listbox, ListboxDestroyHook);
		WindowEnableVScroll(listbox, TRUE);
		WindowSetLayoutHook(listbox, ListboxLayoutHook);

		listbox->InstData = (LISTBOXDATA*) malloc(sizeof(LISTBOXDATA));
		((LISTBOXDATA*)listbox->InstData)->SetFocusHook    = NULL;
		((LISTBOXDATA*)listbox->InstData)->KillFocusHook   = NULL;
		((LISTBOXDATA*)listbox->InstData)->PreKeyHook      = NULL;   
		((LISTBOXDATA*)listbox->InstData)->PostKeyHook     = NULL; 
		((LISTBOXDATA*)listbox->InstData)->LbChangedHook   = NULL;
		((LISTBOXDATA*)listbox->InstData)->LbChangingHook  = NULL;
		((LISTBOXDATA*)listbox->InstData)->LbClickedHook   = NULL;

		((LISTBOXDATA*)listbox->InstData)->NumItems = 0;
		((LISTBOXDATA*)listbox->InstData)->SelIndex = -1;
		((LISTBOXDATA*)listbox->InstData)->Sorted = ((flags & LB_SORTED) != 0);
		((LISTBOXDATA*)listbox->InstData)->Descending = ((flags & LB_DESCENDING) != 0);
		((LISTBOXDATA*)listbox->InstData)->FirstItem = NULL;
		((LISTBOXDATA*)listbox->InstData)->LastItem = NULL;
		((LISTBOXDATA*)listbox->InstData)->MouseDown = FALSE;

		WindowSetText(listbox, text);

		return listbox;
	}
	return NULL;
}
Beispiel #5
0
/* ---------------------------------------------------------------------
 * ComboboxNew
 * Create the control
 * ---------------------------------------------------------------------
 */
CUIWINDOW*
ComboboxNew(CUIWINDOW* parent, int x, int y, int w, int h, int id, int sflags, int cflags)
{
	if (parent)
	{
		CUIWINDOW* combobox;
		int flags = sflags | CWS_TABSTOP;
		flags &= ~(cflags);

		combobox = WindowNew(parent, x, y, w, 1, flags);
		combobox->Class = _T("COMBOBOX");
		WindowSetId(combobox, id);
		WindowSetPaintHook(combobox, ComboboxPaintHook);
		WindowSetKeyHook(combobox, ComboboxKeyHook);
		WindowSetDestroyHook(combobox, ComboboxDestroyHook);
		WindowSetSetFocusHook(combobox, ComboboxSetFocusHook);
		WindowSetKillFocusHook(combobox, ComboboxKillFocusHook);
		WindowSetMButtonHook(combobox, ComboboxMButtonHook);

		combobox->InstData = (COMBOBOXDATA*) malloc(sizeof(COMBOBOXDATA));
		((COMBOBOXDATA*)combobox->InstData)->Height = h;
		((COMBOBOXDATA*)combobox->InstData)->SetFocusHook    = NULL;
		((COMBOBOXDATA*)combobox->InstData)->KillFocusHook   = NULL;
		((COMBOBOXDATA*)combobox->InstData)->PreKeyHook      = NULL;
		((COMBOBOXDATA*)combobox->InstData)->PostKeyHook     = NULL;
		((COMBOBOXDATA*)combobox->InstData)->CbChangedHook   = NULL;
		((COMBOBOXDATA*)combobox->InstData)->CbChangingHook  = NULL;

		((COMBOBOXDATA*)combobox->InstData)->NumItems = 0;
		((COMBOBOXDATA*)combobox->InstData)->SelIndex = -1;
		((COMBOBOXDATA*)combobox->InstData)->CtrlSelIndex = -1;
		((COMBOBOXDATA*)combobox->InstData)->Sorted = ((flags & LB_SORTED) != 0);
		((COMBOBOXDATA*)combobox->InstData)->Descending = ((flags & LB_DESCENDING) != 0);
		((COMBOBOXDATA*)combobox->InstData)->FirstItem = NULL;
		((COMBOBOXDATA*)combobox->InstData)->LastItem = NULL;
		((COMBOBOXDATA*)combobox->InstData)->MouseDown = FALSE;
		((COMBOBOXDATA*)combobox->InstData)->DropdownState = FALSE;
		((COMBOBOXDATA*)combobox->InstData)->Ctrl = combobox;

		return combobox;
	}
	return NULL;
}
Beispiel #6
0
/* ---------------------------------------------------------------------
 * PasswddlgNew
 * Create a new dialog instance
 * ---------------------------------------------------------------------
 */
CUIWINDOW*
PasswddlgNew(CUIWINDOW* parent, const wchar_t* title, int sflags, int cflags)
{
	if (parent)
	{
		CUIWINDOW* dlg;
		int flags = sflags | CWS_POPUP | CWS_BORDER | CWS_CENTERED;
		flags &= ~(cflags);

		dlg = WindowNew(parent, 0, 0, 51, 10, flags);
		dlg->Class = _T("PASSWD_DLG");
		WindowColScheme(dlg, _T("DIALOG"));
		WindowSetCreateHook(dlg, PasswddlgCreateHook);
		WindowSetDestroyHook(dlg, PasswddlgDestroyHook);

		dlg->InstData = (PASSWDDLGDATA*) malloc(sizeof(PASSWDDLGDATA));
		((PASSWDDLGDATA*)dlg->InstData)->Password[0] = 0;

		WindowSetText(dlg, title);
		return dlg;
	}
	return NULL;
}
Beispiel #7
0
// Program Entry (WinMain)
//int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
int main()
{
	HINSTANCE hInstance = NULL;
	application_t	*app; // = ApplicationNew("OpenGL", hInstance);
	application_t	*app2; // = ApplicationNew("OpenGL 2", hInstance);
	gl_window_t	*win1, *win2;
	
	app = ApplicationNew("OpenGL", hInstance);
	app2 = ApplicationNew("OpenGL 2", hInstance);
start:
	
	// left, top, width, height
	char title[1024];
	sprintf(title, "system metrics: %dx%d", GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));

	win1 = WindowNew(app, title, 100, 100, 1024, 768, MyInitialize, MyDeinitialize, MyUpdate, MyDraw);
	if ( ! win1->isCreated) {
		MessageBox (HWND_DESKTOP, "Error Creating OpenGL Window", "Error", MB_OK | MB_ICONEXCLAMATION);
		return -1;
	}

	win2 = WindowNew(app2, title, 100, 100, 1024, 768, MyInitialize, MyDeinitialize, MyUpdate, MyDraw);
	if ( ! win2->isCreated) {
		MessageBox (HWND_DESKTOP, "Error Creating OpenGL Window", "Error", MB_OK | MB_ICONEXCLAMATION);
		return -1;
	}

	// Ask The User If They Want To Start In FullScreen Mode? (Remove These 4 Lines If You Want To Force Fullscreen)
	//if (MessageBox (HWND_DESKTOP, "Would You Like To Run In Fullscreen Mode?", "Start FullScreen?", MB_YESNO | MB_ICONQUESTION) == IDNO)
	//{
	//	window.init.isFullScreen = FALSE;								// If Not, Run In Windowed Mode
	//}
	
	
	WindowInit(win1);
	WindowInit(win2);
	int quitcounter = 0;
	while (1) {
		if (! win1->quit) {
			WindowUpdate(win1);
			WindowDraw(win1);
			WindowMessageLoop(win1);
		}
		
		if (! win2->quit) {
			WindowUpdate(win2);
			WindowDraw(win2);
			WindowMessageLoop(win2);
		}

		if (win1->quit && win2->quit)
			break;
	}
	
	goto start;
	
	ApplicationClose(app);
	ApplicationClose(app2);

	
	return 0;
}
Beispiel #8
0
/* ---------------------------------------------------------------------
 * ComboboxShowDropdown
 * Display dropdown window
 * ---------------------------------------------------------------------
 */
static void
ComboboxShowDropdown(CUIWINDOW* win, COMBOBOXDATA* data, int capture)
{
	CUIWINDOW* listbox;
	CUIRECT rc;
	int height;

	WindowGetWindowRect(win, &rc);

	height = ((data->NumItems + 2) > data->Height) ? data->Height : (data->NumItems + 2);
	if ((LINES - rc.Y) > height)
	{
		listbox = WindowNew(win, rc.X, rc.Y + 1, rc.W, height, 
			CWS_POPUP | CWS_BORDER | CWS_TABSTOP);
	}
	else if (rc.Y > (LINES / 2))
	{
		if (height > (rc.Y - 1))
		{
			height = rc.Y - 1;
		}
		listbox = WindowNew(win, rc.X, rc.Y - height - 1, rc.W, height, 
			CWS_POPUP | CWS_BORDER | CWS_TABSTOP);
	}
	else
	{
		if (height > (LINES - rc.Y - 1))
		{
			height = LINES - rc.Y - 1;
		}
		listbox = WindowNew(win, rc.X, rc.Y + 1, rc.W, height, 
			CWS_POPUP | CWS_BORDER | CWS_TABSTOP);
	}

	listbox->Class = _T("CBDROPDOWN");
	WindowSetPaintHook(listbox, CbDropdownPaintHook);
	WindowSetKeyHook(listbox, CbDropdownKeyHook);
	WindowSetMButtonHook(listbox, CbDropdownMButtonHook);
	WindowSetVScrollHook(listbox, CbDropdownVScrollHook);
	WindowSetSizeHook(listbox, CbDropdownSizeHook);
	WindowSetSetFocusHook(listbox, CbDropdownSetFocusHook);
	WindowSetKillFocusHook(listbox, CbDropdownKillFocusHook);
	WindowEnableVScroll(listbox, TRUE);

	listbox->InstData = (void*) data;
	data->SelIndex = data->CtrlSelIndex;
	data->MouseDown = capture;
	data->DropdownState = TRUE;
	data->CloseKey = 0;

	if (height > 0)
	{
		WindowCreate(listbox);
		if (capture)
		{
			WindowSetCapture(listbox);
		}
		WindowModal(listbox);
		WindowReleaseCapture();
	}
	WindowDestroy(listbox);

	data->DropdownState = FALSE;
	ComboboxUpdate(win);

	switch(data->CloseKey)
	{
	case KEY_TAB:
	case KEY_RIGHT:
		WindowFocusNext(win->Parent);
		break;
	case KEY_LEFT:
		WindowFocusPrevious(win->Parent);
		break;
	}
}