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(); } }
void ModulePromGroup::realize() { update_component(); component->set_pos(group->posx, group->posy); }
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; }