Add command buffer pane

This commit is contained in:
Josh Holtrop 2017-01-17 23:50:24 -05:00
parent 16d4b1e21b
commit 212215bf4d
4 changed files with 28 additions and 2 deletions

View File

@ -9,6 +9,8 @@ BufferPane::BufferPane(Window * window, std::shared_ptr<Buffer> buffer)
m_target_column = 0; m_target_column = 0;
m_cursor_virtual_column = 0; m_cursor_virtual_column = 0;
m_show_status_bar = true; m_show_status_bar = true;
m_command_mode = false;
m_focused = false;
} }
void BufferPane::resize(int width, int height) void BufferPane::resize(int width, int height)
@ -393,6 +395,10 @@ void BufferPane::draw_buffer_character(int screen_column, int screen_row, uint32
void BufferPane::draw_cursor(int x, int y) void BufferPane::draw_cursor(int x, int y)
{ {
if (m_command_mode && (!m_focused))
{
return;
}
int width = m_window->font()->get_advance(); int width = m_window->font()->get_advance();
int height = m_window->font()->get_line_height(); int height = m_window->font()->get_line_height();
if (insert_mode()) if (insert_mode())
@ -721,3 +727,9 @@ void BufferPane::redo()
m_buffer->redo(); m_buffer->redo();
m_window->request_redraw(); m_window->request_redraw();
} }
void BufferPane::set_command_mode()
{
m_command_mode = true;
set_show_status_bar(false);
}

View File

@ -29,6 +29,8 @@ public:
{ {
m_show_status_bar = show_status_bar; m_show_status_bar = show_status_bar;
} }
void set_command_mode();
void set_focused(bool focused);
protected: protected:
int effective_scroll_offset() int effective_scroll_offset()
@ -77,6 +79,8 @@ protected:
std::list<std::pair<int, Buffer::Iterator>> m_screen_lines; std::list<std::pair<int, Buffer::Iterator>> m_screen_lines;
int m_target_column; int m_target_column;
bool m_show_status_bar; bool m_show_status_bar;
bool m_command_mode;
bool m_focused;
}; };
#endif #endif

View File

@ -121,6 +121,9 @@ bool Window::create(std::shared_ptr<Buffer> buffer)
glClearColor (0.0, 0.0, 0.0, 0.0); glClearColor (0.0, 0.0, 0.0, 0.0);
m_buffer_pane = std::make_shared<BufferPane>(this, buffer); m_buffer_pane = std::make_shared<BufferPane>(this, buffer);
m_command_buffer = std::make_shared<Buffer>();
m_command_buffer_pane = std::make_shared<BufferPane>(this, m_command_buffer);
m_command_buffer_pane->set_command_mode();
resize(); resize();
@ -365,8 +368,11 @@ void Window::resize()
SDL_GetWindowSize(m_window, &m_width, &m_height); SDL_GetWindowSize(m_window, &m_width, &m_height);
glViewport(0, 0, m_width, m_height); glViewport(0, 0, m_width, m_height);
m_gl->resize(m_width, m_height); m_gl->resize(m_width, m_height);
m_buffer_pane->move(0, 0); int line_height = m_font->get_line_height();
m_buffer_pane->resize(m_width, m_height); m_buffer_pane->move(0, line_height + 1);
m_buffer_pane->resize(m_width, m_height - line_height - 1);
m_command_buffer_pane->resize(m_width, line_height);
m_command_buffer_pane->move(0, 0);
} }
void Window::redraw() void Window::redraw()
@ -374,6 +380,8 @@ void Window::redraw()
glClear(GL_COLOR_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT);
m_buffer_pane->draw(); m_buffer_pane->draw();
m_gl->draw_rect(0, m_font->get_line_height(), m_width, 1, 0.5, 0.5, 0.5, 1.0);
m_command_buffer_pane->draw();
SDL_GL_SwapWindow(m_window); SDL_GL_SwapWindow(m_window);
} }

View File

@ -85,6 +85,8 @@ protected:
std::shared_ptr<GL> m_gl; std::shared_ptr<GL> m_gl;
std::shared_ptr<BufferPane> m_buffer_pane; std::shared_ptr<BufferPane> m_buffer_pane;
std::shared_ptr<Buffer> m_command_buffer;
std::shared_ptr<BufferPane> m_command_buffer_pane;
Uint16 m_keymod; Uint16 m_keymod;
}; };