Hotkey Bind: enable dialog and remove old GUI1 code

This commit is contained in:
Charles Dang 2017-03-15 22:19:42 +11:00
parent 585ce88d64
commit 581aba7e9d
6 changed files with 2 additions and 131 deletions

View file

@ -813,7 +813,6 @@
<Unit filename="../../src/hotkey/hotkey_item.hpp" /> <Unit filename="../../src/hotkey/hotkey_item.hpp" />
<Unit filename="../../src/hotkey/hotkey_manager.cpp" /> <Unit filename="../../src/hotkey/hotkey_manager.cpp" />
<Unit filename="../../src/hotkey/hotkey_manager.hpp" /> <Unit filename="../../src/hotkey/hotkey_manager.hpp" />
<Unit filename="../../src/hotkey/hotkey_preferences_display.cpp" />
<Unit filename="../../src/image.cpp" /> <Unit filename="../../src/image.cpp" />
<Unit filename="../../src/image.hpp" /> <Unit filename="../../src/image.hpp" />
<Unit filename="../../src/image_modifications.cpp" /> <Unit filename="../../src/image_modifications.cpp" />

View file

@ -301,7 +301,6 @@ help/help_topic_generators.cpp
hotkey/hotkey_handler.cpp hotkey/hotkey_handler.cpp
hotkey/hotkey_handler_mp.cpp hotkey/hotkey_handler_mp.cpp
hotkey/hotkey_handler_sp.cpp hotkey/hotkey_handler_sp.cpp
hotkey/hotkey_preferences_display.cpp
intro.cpp intro.cpp
lobby_preferences.cpp lobby_preferences.cpp
menu_events.cpp menu_events.cpp

View file

@ -820,15 +820,10 @@ void preferences_dialog::add_hotkey_callback(listbox& hotkeys)
int row_number = hotkeys.get_selected_row(); int row_number = hotkeys.get_selected_row();
const hotkey::hotkey_command& hotkey_item = *visible_hotkeys_[row_number]; const hotkey::hotkey_command& hotkey_item = *visible_hotkeys_[row_number];
// TODO
#if 0
gui2::dialogs::hotkey_bind bind_dlg(hotkey_item.command); gui2::dialogs::hotkey_bind bind_dlg(hotkey_item.command);
bind_dlg.show(video); bind_dlg.show(video);
hotkey::hotkey_ptr newhk = bind_dlg.get_new_binding(); hotkey::hotkey_ptr newhk = bind_dlg.get_new_binding();
#endif
hotkey::hotkey_ptr newhk = hotkey::show_binding_dialog(video, hotkey_item.command);
hotkey::hotkey_ptr oldhk; hotkey::hotkey_ptr oldhk;
// only if not cancelled. // only if not cancelled.

View file

@ -155,40 +155,6 @@ void hotkey_base::save(config& item) const
save_helper(item); save_helper(item);
} }
hotkey_ptr create_hotkey(const std::string &id, SDL_Event &event)
{
hotkey_ptr base = hotkey_ptr(new hotkey_void);
switch (event.type) {
case SDL_KEYDOWN:
case SDL_KEYUP: {
hotkey_keyboard_ptr keyboard(new hotkey_keyboard());
base = std::dynamic_pointer_cast<hotkey_base>(keyboard);
SDL_Scancode code;
code = event.key.keysym.scancode;
std::cerr << "code is " << code << std::endl;
keyboard->set_scancode(code);
break;
}
case SDL_MOUSEBUTTONDOWN:
case SDL_MOUSEBUTTONUP: {
hotkey_mouse_ptr mouse(new hotkey_mouse());
base = std::dynamic_pointer_cast<hotkey_base>(mouse);
mouse->set_button(event.button.button);
break;
}
default:
ERR_G<< "Trying to bind an unknown event type:" << event.type << "\n";
break;
}
base->set_mods(sdl_get_mods());
base->set_command(id);
base->unset_default();
return base;
}
hotkey_ptr create_hotkey(const std::string& id, SDL_Scancode new_val) hotkey_ptr create_hotkey(const std::string& id, SDL_Scancode new_val)
{ {
hotkey_ptr base = hotkey_ptr(new hotkey_void); hotkey_ptr base = hotkey_ptr(new hotkey_void);

View file

@ -371,15 +371,10 @@ void add_hotkey(const hotkey_ptr item);
*/ */
void del_hotkey(const hotkey_ptr item); void del_hotkey(const hotkey_ptr item);
/** /** Create a new hotkey item bound to a keyboard key. */
* Create a new hotkey item for a command from an SDL_Event.
* @param id The command to bind to.
* @param event The SDL_Event to base the creation on.
*/
hotkey_ptr create_hotkey(const std::string &id, SDL_Event &event);
hotkey_ptr create_hotkey(const std::string& id, SDL_Scancode new_val); hotkey_ptr create_hotkey(const std::string& id, SDL_Scancode new_val);
/** Create a new hotkey item bound to a mouse button. */
hotkey_ptr create_hotkey(const std::string& id, Uint8 new_val); hotkey_ptr create_hotkey(const std::string& id, Uint8 new_val);
/** /**

View file

@ -1,83 +0,0 @@
/*
Copyright (C) 2012 - 2016 by Fabian Mueller <fabianmueller5@gmx.de>
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
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.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY.
See the COPYING file for more details.
*/
#define GETTEXT_DOMAIN "wesnoth-lib"
/**
* @file
* Manages the hotkey bindings.
*/
#include "hotkey/hotkey_item.hpp"
#include "construct_dialog.hpp"
#include "gettext.hpp"
#include "font/marked-up_text.hpp"
#include "font/standard_colors.hpp"
#include "sdl/rect.hpp"
namespace hotkey {
hotkey::hotkey_ptr show_binding_dialog(CVideo& video, const std::string& id)
{
// Lets bind a hotkey...
const std::string text = _("Press desired hotkey (Esc cancels)");
SDL_Rect clip_rect = sdl::create_rect(0, 0, video.getx(), video.gety());
SDL_Rect text_size = font::draw_text(nullptr, clip_rect, font::SIZE_LARGE,
font::NORMAL_COLOR, text, 0, 0);
const int centerx = video.getx() / 2;
const int centery = video.gety() / 2;
SDL_Rect dlgr = sdl::create_rect(centerx - text_size.w / 2 - 30,
centery - text_size.h / 2 - 16, text_size.w + 60,
text_size.h + 32);
surface_restorer restorer(&video, dlgr);
gui::dialog_frame mini_frame(video);
mini_frame.layout(centerx - text_size.w / 2 - 20,
centery - text_size.h / 2 - 6, text_size.w + 40,
text_size.h + 12);
mini_frame.draw_background();
mini_frame.draw_border();
font::draw_text(&video, clip_rect, font::SIZE_LARGE,
font::NORMAL_COLOR, text,
centerx - text_size.w / 2, centery - text_size.h / 2);
video.flip();
SDL_Event event = {0};
event.type = 0;
int keycode = -1;
do {
switch (event.type) {
case SDL_KEYDOWN:
keycode = event.key.keysym.sym;
break;
}
SDL_PollEvent(&event);
events::peek_for_resize();
} while (event.type != SDL_KEYUP && event.type != SDL_JOYBUTTONUP
&& event.type != SDL_JOYHATMOTION
&& event.type != SDL_MOUSEBUTTONUP);
restorer.restore();
return keycode == SDLK_ESCAPE ? hotkey::hotkey_ptr() : hotkey::create_hotkey(id, event);
}
} //end namespace hotkey