From f65ce58fb038fe5633898945d46c072bfc0c6e19 Mon Sep 17 00:00:00 2001 From: Jim Morris Date: Tue, 2 Jul 2013 01:09:53 -0700 Subject: [PATCH] Add motors off to prepare screen Allow for panel to change the numerb of screen lines available, default is still 4 --- src/modules/utils/panel/Panel.cpp | 7 +++++++ src/modules/utils/panel/Panel.h | 5 ++++- src/modules/utils/panel/panels/LcdBase.h | 4 +++- src/modules/utils/panel/screens/ControlScreen.cpp | 2 +- src/modules/utils/panel/screens/ExtruderScreen.cpp | 2 +- src/modules/utils/panel/screens/FileScreen.cpp | 2 +- src/modules/utils/panel/screens/JogScreen.cpp | 2 +- src/modules/utils/panel/screens/MainMenuScreen.cpp | 2 +- src/modules/utils/panel/screens/PrepareScreen.cpp | 8 +++++--- src/modules/utils/panel/screens/WatchScreen.cpp | 2 +- 10 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/modules/utils/panel/Panel.cpp b/src/modules/utils/panel/Panel.cpp index 55686da6..df851280 100644 --- a/src/modules/utils/panel/Panel.cpp +++ b/src/modules/utils/panel/Panel.cpp @@ -65,6 +65,9 @@ void Panel::on_module_loaded(){ // some panels may need access to this global info this->lcd->setPanel(this); + // the number of screen lines the panel supports + this->screen_lines= this->lcd->get_screen_lines(); + // some encoders may need more clicks to move menu, this is a divisor and is in config as it is // an end user usability issue this->menu_offset = this->kernel->config->value( panel_checksum, menu_offset_checksum )->by_default(0)->as_number(); @@ -242,6 +245,10 @@ void Panel::enter_menu_mode(){ this->menu_changed = false; } +void Panel::setup_menu(uint16_t rows){ + this->setup_menu(rows, min(rows, this->max_screen_lines())); +} + void Panel::setup_menu(uint16_t rows, uint16_t lines){ this->menu_selected_line = 0; this->menu_start_line = 0; diff --git a/src/modules/utils/panel/Panel.h b/src/modules/utils/panel/Panel.h index be3619a5..e720a6af 100644 --- a/src/modules/utils/panel/Panel.h +++ b/src/modules/utils/panel/Panel.h @@ -62,10 +62,12 @@ class Panel : public Module { // Menu void enter_menu_mode(); void setup_menu(uint16_t rows, uint16_t lines); + void setup_menu(uint16_t rows); void menu_update(); bool menu_change(); uint16_t menu_current_line(); - + uint16_t max_screen_lines() { return screen_lines; } + // Control bool enter_control_mode(double passed_normal_increment, double passed_pressed_increment); void set_control_value(double value); @@ -118,6 +120,7 @@ class Panel : public Module { int idle_time; int encoder_click_resolution; char mode; + uint16_t screen_lines; MainMenuScreen* top_screen; PanelScreen* current_screen; diff --git a/src/modules/utils/panel/panels/LcdBase.h b/src/modules/utils/panel/panels/LcdBase.h index f41fbb04..042b921f 100644 --- a/src/modules/utils/panel/panels/LcdBase.h +++ b/src/modules/utils/panel/panels/LcdBase.h @@ -109,7 +109,9 @@ class LcdBase { // only used on certain panels virtual void on_refresh(){}; virtual void on_main_loop(){}; - + // override this if the panel can hndle more or less screen lines + virtual uint16_t get_screen_lines() { return 4; } + protected: Panel* panel; diff --git a/src/modules/utils/panel/screens/ControlScreen.cpp b/src/modules/utils/panel/screens/ControlScreen.cpp index 2208e08a..4beecfd5 100644 --- a/src/modules/utils/panel/screens/ControlScreen.cpp +++ b/src/modules/utils/panel/screens/ControlScreen.cpp @@ -25,7 +25,7 @@ ControlScreen::ControlScreen(){ void ControlScreen::on_enter(){ this->panel->enter_menu_mode(); - this->panel->setup_menu(4, 4); + this->panel->setup_menu(4); get_current_pos(this->pos); this->refresh_menu(); this->pos_changed= false; diff --git a/src/modules/utils/panel/screens/ExtruderScreen.cpp b/src/modules/utils/panel/screens/ExtruderScreen.cpp index d9dc3ebb..4451988d 100644 --- a/src/modules/utils/panel/screens/ExtruderScreen.cpp +++ b/src/modules/utils/panel/screens/ExtruderScreen.cpp @@ -22,7 +22,7 @@ ExtruderScreen::ExtruderScreen(){ void ExtruderScreen::on_enter(){ this->panel->enter_menu_mode(); - this->panel->setup_menu(3, 4); // 3 menu items, 4 lines + this->panel->setup_menu(3); // 3 menu items, 4 lines this->refresh_screen(); } diff --git a/src/modules/utils/panel/screens/FileScreen.cpp b/src/modules/utils/panel/screens/FileScreen.cpp index 26200f8e..e841eaf7 100644 --- a/src/modules/utils/panel/screens/FileScreen.cpp +++ b/src/modules/utils/panel/screens/FileScreen.cpp @@ -58,7 +58,7 @@ void FileScreen::enter_folder(std::string folder){ uint16_t number_of_files_in_folder = this->count_folder_content(this->current_folder); // Setup menu - this->panel->setup_menu(number_of_files_in_folder+1, 4); // same number of files as menu items, 4 lines + this->panel->setup_menu(number_of_files_in_folder+1); // same number of files as menu items, 4 lines this->panel->enter_menu_mode(); // Display menu diff --git a/src/modules/utils/panel/screens/JogScreen.cpp b/src/modules/utils/panel/screens/JogScreen.cpp index 84c2596e..62f3cc5f 100644 --- a/src/modules/utils/panel/screens/JogScreen.cpp +++ b/src/modules/utils/panel/screens/JogScreen.cpp @@ -26,7 +26,7 @@ JogScreen::JogScreen(){ void JogScreen::on_enter(){ this->panel->enter_menu_mode(); - this->panel->setup_menu(4, 4); // 6 menu items, 4 lines + this->panel->setup_menu(4); // 6 menu items this->refresh_screen(); } diff --git a/src/modules/utils/panel/screens/MainMenuScreen.cpp b/src/modules/utils/panel/screens/MainMenuScreen.cpp index 9bebc459..0e31e980 100644 --- a/src/modules/utils/panel/screens/MainMenuScreen.cpp +++ b/src/modules/utils/panel/screens/MainMenuScreen.cpp @@ -32,7 +32,7 @@ MainMenuScreen::MainMenuScreen(){ void MainMenuScreen::on_enter(){ this->panel->enter_menu_mode(); - this->panel->setup_menu(4, 4); // 6 menu items, 4 lines + this->panel->setup_menu(4); // 6 menu items this->refresh_screen(); } diff --git a/src/modules/utils/panel/screens/PrepareScreen.cpp b/src/modules/utils/panel/screens/PrepareScreen.cpp index b5bc2481..4cabb74c 100644 --- a/src/modules/utils/panel/screens/PrepareScreen.cpp +++ b/src/modules/utils/panel/screens/PrepareScreen.cpp @@ -27,7 +27,7 @@ PrepareScreen::PrepareScreen(){ void PrepareScreen::on_enter(){ this->panel->enter_menu_mode(); - this->panel->setup_menu(6, 4); // 7 menu items, 4 lines + this->panel->setup_menu(7); // 7 menu items this->refresh_screen(); } @@ -52,7 +52,8 @@ void PrepareScreen::display_menu_line(uint16_t line){ case 3: this->panel->lcd->printf("Pre Heat" ); break; case 4: this->panel->lcd->printf("Cool Down" ); break; case 5: this->panel->lcd->printf("Extrude" ); break; - //case 6: this->panel->lcd->printf("Set Temperature"); break; + case 6: this->panel->lcd->printf("Motors off" ); break; + //case 7: this->panel->lcd->printf("Set Temperature"); break; } } @@ -64,7 +65,8 @@ void PrepareScreen::clicked_menu_entry(uint16_t line){ case 3: this->preheat(); break; case 4: this->cooldown(); break; case 5: this->panel->enter_screen(this->extruder_screen); break; - //case 6: this->panel->enter_screen(this->temp_screen ); break; + case 6: send_gcode("M84"); break; + //case 7: this->panel->enter_screen(this->temp_screen ); break; } } diff --git a/src/modules/utils/panel/screens/WatchScreen.cpp b/src/modules/utils/panel/screens/WatchScreen.cpp index 096ef74f..096478a8 100644 --- a/src/modules/utils/panel/screens/WatchScreen.cpp +++ b/src/modules/utils/panel/screens/WatchScreen.cpp @@ -23,7 +23,7 @@ WatchScreen::WatchScreen(){} void WatchScreen::on_enter(){ this->panel->lcd->clear(); - this->panel->setup_menu(4, 4); + this->panel->setup_menu(4); get_temp_data(); get_current_pos(this->pos); get_sd_play_info(); -- 2.20.1