added the (usual) missing files :|

This commit is contained in:
Thomas Jentzsch 2021-12-13 15:39:40 +01:00
parent 1e0da2177d
commit e0048a7421
2 changed files with 167 additions and 0 deletions

View File

@ -0,0 +1,119 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#include "Command.hxx"
#include "Dialog.hxx"
#include "EditTextWidget.hxx"
#include "FileListWidget.hxx"
#include "Icons.hxx"
#include "OSystem.hxx"
#include "NavigationWidget.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NavigationWidget::NavigationWidget(GuiObject* boss, const GUI::Font& font,
int xpos, int ypos, int w, int h)
: Widget(boss, font, xpos, ypos, w, h)
{
// Add some buttons and textfield to show current directory
const int lineHeight = _font.getLineHeight();
const bool useMinimalUI = instance().settings().getBool("minimal_ui");
if(!useMinimalUI)
{
const int
fontHeight = _font.getFontHeight(),
fontWidth = _font.getMaxCharWidth(),
BTN_GAP = fontWidth / 4;
const bool smallIcon = lineHeight < 26;
const GUI::Icon& homeIcon = smallIcon ? GUI::icon_home_small : GUI::icon_home_large;
const GUI::Icon& prevIcon = smallIcon ? GUI::icon_prev_small : GUI::icon_prev_large;
const GUI::Icon& nextIcon = smallIcon ? GUI::icon_next_small : GUI::icon_next_large;
const GUI::Icon& upIcon = smallIcon ? GUI::icon_up_small : GUI::icon_up_large;
const int iconWidth = homeIcon.width();
const int buttonWidth = iconWidth + ((fontWidth + 1) & ~0b1) - 1; // round up to next odd
const int buttonHeight = lineHeight + 2;
myHomeButton = new ButtonWidget(boss, _font, xpos, ypos,
buttonWidth, buttonHeight, homeIcon, FileListWidget::kHomeDirCmd);
myHomeButton->setToolTip("Go back to initial directory.");
boss->addFocusWidget(myHomeButton);
xpos = myHomeButton->getRight() + BTN_GAP;
myPrevButton = new ButtonWidget(boss, _font, xpos, ypos,
buttonWidth, buttonHeight, prevIcon, FileListWidget::kPrevDirCmd);
myPrevButton->setToolTip("Go back in directory history.");
boss->addFocusWidget(myPrevButton);
xpos = myPrevButton->getRight() + BTN_GAP;
myNextButton = new ButtonWidget(boss, _font, xpos, ypos,
buttonWidth, buttonHeight, nextIcon, FileListWidget::kNextDirCmd);
myNextButton->setToolTip("Go forward in directory history.");
boss->addFocusWidget(myNextButton);
xpos = myNextButton->getRight() + BTN_GAP;
myUpButton = new ButtonWidget(boss, _font, xpos, ypos,
buttonWidth, buttonHeight, upIcon, ListWidget::kParentDirCmd);
myUpButton->setToolTip("Go Up");
boss->addFocusWidget(myUpButton);
xpos = myUpButton->getRight() + BTN_GAP;
}
myDir = new EditTextWidget(boss, _font, xpos, ypos, _w + _x - xpos, lineHeight, "");
myDir->setEditable(false, true);
myDir->clearFlags(Widget::FLAG_RETAIN_FOCUS);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void NavigationWidget::setList(FileListWidget* list)
{
myList = list;
// Let the FileListWidget handle the button commands
if(myHomeButton)
myHomeButton->setTarget(myList);
if(myPrevButton)
myPrevButton->setTarget(myList);
if(myNextButton)
myNextButton->setTarget(myList);
if(myUpButton)
myUpButton->setTarget(myList);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void NavigationWidget::setWidth(int w)
{
// Adjust path display accordingly too
myDir->setWidth(w - (myDir->getLeft() - _x));
Widget::setWidth(w);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void NavigationWidget::updateUI()
{
// Only enable the navigation buttons if function is available
if(myHomeButton)
myHomeButton->setEnabled(myList->hasPrevHistory());
if(myPrevButton)
myPrevButton->setEnabled(myList->hasPrevHistory());
if(myNextButton)
myNextButton->setEnabled(myList->hasNextHistory());
if(myUpButton)
myUpButton->setEnabled(myList->currentDir().hasParent());
// Show current directory
myDir->setText(myList->currentDir().getShortPath());
}

View File

@ -0,0 +1,48 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#ifndef NAVIGATION_WIDGET_HXX
#define NAVIGATION_WIDGET_HXX
class EditTextWidget;
class FileListWidget;
class Font;
#include "Widget.hxx"
class NavigationWidget : public Widget
{
public:
NavigationWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int w, int h);
~NavigationWidget() = default;
void setWidth(int w) override;
void setList(FileListWidget* list);
void updateUI();
private:
ButtonWidget* myHomeButton{nullptr};
ButtonWidget* myPrevButton{nullptr};
ButtonWidget* myNextButton{nullptr};
ButtonWidget* myUpButton{nullptr};
EditTextWidget* myDir{nullptr};
FileListWidget* myList{nullptr};
};
#endif