Esempio n. 1
0
void consoleStartLine(console_state_t *console, const char *prompt = NULL) {
	if (console->empty) {
		console->empty = false;
	} else {
		console->endLine = (console->endLine + 1) % console->maxLines;
		if (console->endLine == console->startLine) {
			free(console->lines[console->endLine].buffer);
			console->startLine = (console->startLine + 1) % console->maxLines;
		}
	}
	int line = console->endLine;
	console->lines[line].length = 0;
	console->lines[line].buffer = (char*)malloc(128);
	// TODO: check for failure
	console->lines[line].buffer[0] = 0;
	console->lines[line].bufferSize = 128;
	if (prompt != NULL) {
		consoleAppend(console, prompt);
		console->lines[line].promptLength = strlen(prompt);
	} else {
		console->lines[line].promptLength = 0;
	}
}
Esempio n. 2
0
void consolePanelHandler(SDL_Event *evt, panel_t *panel) {
	console_state_t *console = (console_state_t*)panel->userdata;
	if (evt->type == SDL_MOUSEBUTTONDOWN) {
		makeKeyPanel(panel);
	}
	if (evt->type == SDL_KEYDOWN) {
		SDL_Scancode sc = evt->key.keysym.scancode;
		Uint16 mod = evt->key.keysym.mod;
		char ch = 0;
		if (sc < 256) {
			if (mod & KMOD_SHIFT) {
				ch = keyCharShiftMap[sc];
			} else {
				ch = keyCharMap[sc];
			}
			if (mod & KMOD_CAPS) {
				if (ch >= 65 && ch <= 90) {
					ch += 32;
				} else if (ch >= 97 && ch <= 122) {
					ch -= 32;
				}
			}
		} else {
			printf("weird scan code: %d\n", sc);
		}
		if (ch > 0) {
			consoleAppend(console, ch);
		} else {
			SDL_Keycode sym = evt->key.keysym.sym;
			if (sym == SDLK_BACKSPACE) {
				consoleBackwardsDeleteChar(console);
			} else if (sym == SDLK_RETURN) {
				consoleStartLine(console, "> ");
			}
		}
	}
}
Esempio n. 3
0
void _stdcall outputHandler(J jt,int type, const char* s) {
		 consoleAppend(local_jnienv,local_baseobj,type,s);
}