diff options
Diffstat (limited to 'plugingui/frame.cc')
-rw-r--r-- | plugingui/frame.cc | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/plugingui/frame.cc b/plugingui/frame.cc deleted file mode 100644 index d375b6d..0000000 --- a/plugingui/frame.cc +++ /dev/null @@ -1,146 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - * frame.cc - * - * Tue Feb 7 21:07:56 CET 2017 - * Copyright 2017 André Nusser - * andre.nusser@googlemail.com - ****************************************************************************/ - -/* - * This file is part of DrumGizmo. - * - * DrumGizmo is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DrumGizmo is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with DrumGizmo; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ -#include "frame.h" - -#include "painter.h" - -namespace GUI -{ - -FrameWidget::FrameWidget(Widget* parent, bool has_switch, bool has_help_text) - : Widget(parent) - , is_switched_on(!has_switch) - , bar_height(24) -{ - if(has_switch) - { - // We only have to set this once as nothing happens on a resize - power_button.move(4, 4); - power_button.resize(16, 16); - - power_button.setChecked(is_switched_on); - CONNECT(&power_button, stateChangedNotifier, this, - &FrameWidget::powerButtonStateChanged); - } - power_button.setVisible(has_switch); - - if(has_help_text) - { - // We only have to set this once as nothing happens on a resize - help_button.resize(16, 16); - help_button.move(width() - 4 - 16, 4); - help_button.setText("?"); - } - help_button.setVisible(has_help_text); - - CONNECT(this, sizeChangeNotifier, this, &FrameWidget::sizeChanged); -} - -void FrameWidget::repaintEvent(RepaintEvent* repaintEvent) -{ - Painter p(*this); - - int center_x = width() / 2; - auto title_buf = title.c_str(); - - // draw the dark grey box - p.setColour(enabled ? grey_box_colour : grey_box_colour_disabled); - p.drawFilledRectangle(1, 1, width() - 2, bar_height); - - // frame - p.setColour(frame_colour_top); - p.drawLine(0, 0, width() - 1, 0); - p.setColour(frame_colour_bottom); - p.drawLine(0, height() - 1, width() - 1, height() - 1); - p.setColour(frame_colour_side); - p.drawLine(0, 0, 0, height() - 1); - p.drawLine(width() - 1, 0, width() - 1, height() - 1); - - // background - p.setColour(background_colour); - p.drawFilledRectangle(1, bar_height, width() - 2, height() - 2); - - // draw the label - p.setColour(enabled ? label_colour : label_colour_disabled); - p.drawText(center_x - label_width, bar_height - 4, font, title_buf); - power_button.setEnabled(enabled); -} - -void FrameWidget::powerButtonStateChanged(bool new_state) -{ - is_switched_on = new_state; - onSwitchChangeNotifier(is_switched_on); -} - -void FrameWidget::setTitle(std::string const& title) -{ - this->title = title; - label_width = font.textWidth(title.c_str()) / 2 + 1; -} - -void FrameWidget::setHelpText(const std::string& help_text) -{ - help_button.setHelpText(help_text); -} - -void FrameWidget::setContent(Widget* content) -{ - this->content = content; - content->reparent(this); -} - -void FrameWidget::setOnSwitch(bool on) -{ - is_switched_on = on; - power_button.setChecked(is_switched_on); -} - -void FrameWidget::setEnabled(bool enabled) -{ - this->enabled = enabled; - onEnabledChanged(enabled); - - redraw(); -} - -void FrameWidget::sizeChanged(int width, int height) -{ - if(content) - { - content_start_x = content_margin; - content_start_y = bar_height + content_margin; - content_width = std::max((int)width - 2 * content_margin, 0); - content_height = std::max((int)height - (bar_height + 2 * content_margin), 0); - - content->move(content_start_x, content_start_y); - content->resize(content_width, content_height); - } - - help_button.move(width - 4 - 16, help_button.y()); -} - -} // GUI:: |