Пример #1
0
void ModulePromGroup::on_property_change(IPropertiesElement* m, const std::string& name, const std::string& val) {
	if(name=="type") {
		group->set_type(val);
		text = type = group->get_type();
		group->set_name(this->name);
		text2 = this->name = group->get_name();
		update_component();
	}
	else if(name=="name") {
		group->set_name(val);
		text2 = this->name = group->get_name();
	} else if(name=="posx" || name=="posy") {
		if(component) component->set_pos(group->posx, group->posy);
	} else if(name=="width" || name=="height") {
		update_component();
	}
}
Пример #2
0
void ModulePromGroup::realize() {
	update_component();
	component->set_pos(group->posx, group->posy);
}
Пример #3
0
int keyval_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
	DBG_KEYVAL_DATA *dat = cdat->state;

	switch (msg) {
		case WM_CREATE: {
			dat->slot = -1;
			dat->type = -1;
			dat->key_width = 0;
			dat->pos = NULL;
			dat->enter = NULL;
		}
		break;
		case WM_MOUSEMOVE: {
			int x = LOWORD(lparam), y = HIWORD(lparam);
			if ((x >= 14) && (x < cdat->r.xs - 14) && (y >= 20) && (y < cdat->r.ys - 14)) {
				if (keyval_id(dat->pos, x - dat->key_width - 14, (y - 20) / 13) != -1)
					SetCursor(cur_mod);
				else
					SetCursor(cur_arr);
			}
		}
		break;
		case WM_LBUTTONDOWN: {
			if (activate_calculator(dat->slot) || !dat->key_width) break;
			int x = LOWORD(lparam) - dat->key_width - 14, y = (HIWORD(lparam) - 20) / 13;
			int par = keyval_id(dat->pos, x, y);
			if (par != -1) {
				if (dat->pos[par].editable) {
					DEBUG_INFO di = dat->debug();
					char *ci;
					for (ci = di.value[y]; *ci; ci++)
						if ((*ci == ' ') || (*ci == '%')) {
							*ci = 0;
							break;
						}
					SetWindowPos(edit_box, HWND_TOP,
						cdat->r.x + dat->pos[par].x + dat->key_width + 14, cdat->r.y + y * 13 + 20,
						dat->pos[par].xs, 13, 0);
					SendMessage(edit_box, WM_SETTEXT, 0, (LPARAM)di.value[y]);
					SendMessage(edit_box, EM_SETLIMITTEXT, DEBUG_INPUT_LEN, 0);
					ShowWindow(edit_box, TRUE);
					SetFocus(edit_box);
					dat->enter = dat->pos[par].enter;
				} else {
					if (dat->pos[par].enter) {
						dat->pos[par].enter();
						SendMessage(debug_window, WM_USER, DEBUG_REFRESH, 0);
					}
					dat->enter = NULL;
				}
			} else {
				keyval_stop_editing(dat);
			}
			update_component();
		}
		break;
		case WM_PRINT:
			keyval_paint(dat, (HDC)wparam);
		break;
		case WM_USER:
			switch (wparam) {
				case DEBUG_SLOT: {
					dat->slot = LOWORD(lparam);
					if (HIWORD(lparam) > 0) dat->type = HIWORD(lparam) - 1;
					KEYVAL_DATA* kvd = keyval_data(dat->type, calc[dat->slot].rom_ver);
					dat->debug = kvd->debug;
					dat->pos = kvd->pos;
					strcpy(cdat->name, kvd->name);
					keyval_set_width(dat, hwnd);
				}
				break;
				case DEBUG_RESLOT: {
					KEYVAL_DATA* kvd = keyval_data(dat->type, calc[dat->slot].rom_ver);
					dat->debug = kvd->debug;
					dat->pos = kvd->pos;
					strcpy(cdat->name, kvd->name);
					keyval_set_width(dat, hwnd);
				}
				break;
				case DEBUG_EDITED:
					keyval_stop_editing(dat);
				break;
				case DEBUG_NOEDIT:
				case DEBUG_REFRESH:
				case DEBUG_STARTDRAG:
					dat->enter = NULL;
					keyval_stop_editing(dat);
				break;
			}
		break;
	}
	return 0;
}