void CDPlayer::resized() { int buttonWidth = std::min(getWidth() / 11, 32); int buttonHeight = buttonWidth; #define PLACE_BUTTON(IDX, BTN) BTN.setBounds(IDX* buttonWidth + 3, 3, buttonWidth - 6, buttonHeight - 6); PLACE_BUTTON(0, m_playButton); PLACE_BUTTON(1, m_pauseButton); PLACE_BUTTON(2, m_stopButton); PLACE_BUTTON(3, m_skipBackwardButton); PLACE_BUTTON(4, m_skipForwardButton); #if JUCE_WINDOWS PLACE_BUTTON(5, m_ejectButton); PLACE_BUTTON(6, m_configureButton); #else PLACE_BUTTON(5, m_configureButton); #endif #undef PLACE_BUTTON m_digitalDisplay.setBounds(7 * buttonWidth + 3, 3, buttonWidth * 3, buttonHeight - 6); m_availableCDsComboBox.setBounds(10 * buttonWidth + 3, 3, getWidth() - (10 * buttonWidth + 3), buttonHeight - 6); m_slider.setBounds(0, buttonHeight, getWidth(), buttonHeight); m_tracksTable.setBounds(0, buttonHeight * 2, getWidth(), getHeight() - buttonHeight * 2); }
int main(int argc, char** argv) { g_ui_open_status open_stat = g_ui::open(); if (open_stat == G_UI_OPEN_STATUS_SUCCESSFUL) { g_window* window = g_window::create(); window->setTitle("Calculator"); window->setResizable(false); display = g_textfield::create(); display->setTitle("0"); display->setBounds(g_rectangle(10, 10, 150, 30)); window->addChild(display); #define PLACE_BUTTON_T(num, text, x, y) \ but##num = g_button::create(); \ but##num->setTitle(text); \ but##num->setBounds(g_rectangle(x, y, 30, 30)); \ window->addChild(but##num); #define PLACE_BUTTON(num, x, y) PLACE_BUTTON_T(num, #num, x, y); int grid1 = 10; int grid2 = 50; int grid3 = 90; int grid4 = 130; int grid5 = 170; int dispOff = 40; PLACE_BUTTON_T(Clear, "C", grid1, grid1 + dispOff); butClear->setActionListener(new command_press_action_listener_t(COM_CLEAR)); PLACE_BUTTON(1, grid1, grid2 + dispOff); but1->setActionListener(new num_press_action_listener_t(1)); PLACE_BUTTON(2, grid2, grid2 + dispOff); but2->setActionListener(new num_press_action_listener_t(2)); PLACE_BUTTON(3, grid3, grid2 + dispOff); but3->setActionListener(new num_press_action_listener_t(3)); PLACE_BUTTON(4, grid1, grid3 + dispOff); but4->setActionListener(new num_press_action_listener_t(4)); PLACE_BUTTON(5, grid2, grid3 + dispOff); but5->setActionListener(new num_press_action_listener_t(5)); PLACE_BUTTON(6, grid3, grid3 + dispOff); but6->setActionListener(new num_press_action_listener_t(6)); PLACE_BUTTON(7, grid1, grid4 + dispOff); but7->setActionListener(new num_press_action_listener_t(7)); PLACE_BUTTON(8, grid2, grid4 + dispOff); but8->setActionListener(new num_press_action_listener_t(8)); PLACE_BUTTON(9, grid3, grid4 + dispOff); but9->setActionListener(new num_press_action_listener_t(9)); PLACE_BUTTON(0, grid1, grid5 + dispOff); but0->setActionListener(new num_press_action_listener_t(0)); PLACE_BUTTON_T(Plus, "+", grid4, grid1 + dispOff); butPlus->setActionListener(new command_press_action_listener_t(COM_PLUS)); PLACE_BUTTON_T(Minus, "-", grid4, grid2 + dispOff); butMinus->setActionListener(new command_press_action_listener_t(COM_MINUS)); PLACE_BUTTON_T(Mult, "*", grid4, grid3 + dispOff); butMult->setActionListener(new command_press_action_listener_t(COM_MULT)); PLACE_BUTTON_T(Div, "/", grid4, grid4 + dispOff); butDiv->setActionListener(new command_press_action_listener_t(COM_DIV)); PLACE_BUTTON_T(Eq, "=", grid4, grid5 + dispOff); butEq->setActionListener(new command_press_action_listener_t(COM_EQ)); window->setBounds(g_rectangle(70, 70, 190, 320)); window->setVisible(true); uint8_t blocker = true; g_atomic_block(&blocker); } }