window: make color/format/border class enums
This commit is contained in:
@@ -268,7 +268,7 @@ bool askYesNoQuestion(const std::string &question, void (*callback)())
|
|||||||
using Global::wFooter;
|
using Global::wFooter;
|
||||||
|
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << question << " [" << NC::fmtBold << 'y' << NC::fmtBoldEnd << '/' << NC::fmtBold << 'n' << NC::fmtBoldEnd << "]";
|
Statusbar::put() << question << " [" << NC::Format::Bold << 'y' << NC::Format::NoBold << '/' << NC::Format::Bold << 'n' << NC::Format::NoBold << "]";
|
||||||
wFooter->refresh();
|
wFooter->refresh();
|
||||||
int answer = 0;
|
int answer = 0;
|
||||||
do
|
do
|
||||||
@@ -816,7 +816,7 @@ void ExecuteCommand::run()
|
|||||||
{
|
{
|
||||||
using Global::wFooter;
|
using Global::wFooter;
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << NC::fmtBold << ":" << NC::fmtBoldEnd;
|
Statusbar::put() << NC::Format::Bold << ":" << NC::Format::NoBold;
|
||||||
wFooter->setGetStringHelper(Statusbar::Helpers::TryExecuteImmediateCommand());
|
wFooter->setGetStringHelper(Statusbar::Helpers::TryExecuteImmediateCommand());
|
||||||
std::string name = wFooter->getString();
|
std::string name = wFooter->getString();
|
||||||
wFooter->setGetStringHelper(Statusbar::Helpers::getString);
|
wFooter->setGetStringHelper(Statusbar::Helpers::getString);
|
||||||
@@ -1236,7 +1236,7 @@ void EditLibraryTag::run()
|
|||||||
using Global::wFooter;
|
using Global::wFooter;
|
||||||
|
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << NC::fmtBold << tagTypeToString(Config.media_lib_primary_tag) << NC::fmtBoldEnd << ": ";
|
Statusbar::put() << NC::Format::Bold << tagTypeToString(Config.media_lib_primary_tag) << NC::Format::NoBold << ": ";
|
||||||
std::string new_tag = wFooter->getString(myLibrary->Tags.current().value().tag());
|
std::string new_tag = wFooter->getString(myLibrary->Tags.current().value().tag());
|
||||||
Statusbar::unlock();
|
Statusbar::unlock();
|
||||||
if (!new_tag.empty() && new_tag != myLibrary->Tags.current().value().tag())
|
if (!new_tag.empty() && new_tag != myLibrary->Tags.current().value().tag())
|
||||||
@@ -1292,7 +1292,7 @@ void EditLibraryAlbum::run()
|
|||||||
using Global::wFooter;
|
using Global::wFooter;
|
||||||
|
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << NC::fmtBold << "Album: " << NC::fmtBoldEnd;
|
Statusbar::put() << NC::Format::Bold << "Album: " << NC::Format::NoBold;
|
||||||
std::string new_album = wFooter->getString(myLibrary->Albums.current().value().entry().album());
|
std::string new_album = wFooter->getString(myLibrary->Albums.current().value().entry().album());
|
||||||
Statusbar::unlock();
|
Statusbar::unlock();
|
||||||
if (!new_album.empty() && new_album != myLibrary->Albums.current().value().entry().album())
|
if (!new_album.empty() && new_album != myLibrary->Albums.current().value().entry().album())
|
||||||
@@ -1350,7 +1350,7 @@ void EditDirectoryName::run()
|
|||||||
{
|
{
|
||||||
std::string old_dir = myBrowser->main().current().value().name;
|
std::string old_dir = myBrowser->main().current().value().name;
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << NC::fmtBold << "Directory: " << NC::fmtBoldEnd;
|
Statusbar::put() << NC::Format::Bold << "Directory: " << NC::Format::NoBold;
|
||||||
std::string new_dir = wFooter->getString(old_dir);
|
std::string new_dir = wFooter->getString(old_dir);
|
||||||
Statusbar::unlock();
|
Statusbar::unlock();
|
||||||
if (!new_dir.empty() && new_dir != old_dir)
|
if (!new_dir.empty() && new_dir != old_dir)
|
||||||
@@ -1384,7 +1384,7 @@ void EditDirectoryName::run()
|
|||||||
{
|
{
|
||||||
std::string old_dir = myTagEditor->Dirs->current().value().first;
|
std::string old_dir = myTagEditor->Dirs->current().value().first;
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << NC::fmtBold << "Directory: " << NC::fmtBoldEnd;
|
Statusbar::put() << NC::Format::Bold << "Directory: " << NC::Format::NoBold;
|
||||||
std::string new_dir = wFooter->getString(old_dir);
|
std::string new_dir = wFooter->getString(old_dir);
|
||||||
Statusbar::unlock();
|
Statusbar::unlock();
|
||||||
if (!new_dir.empty() && new_dir != old_dir)
|
if (!new_dir.empty() && new_dir != old_dir)
|
||||||
@@ -1426,7 +1426,7 @@ void EditPlaylistName::run()
|
|||||||
else
|
else
|
||||||
old_name = myBrowser->main().current().value().name;
|
old_name = myBrowser->main().current().value().name;
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << NC::fmtBold << "Playlist: " << NC::fmtBoldEnd;
|
Statusbar::put() << NC::Format::Bold << "Playlist: " << NC::Format::NoBold;
|
||||||
std::string new_name = wFooter->getString(old_name);
|
std::string new_name = wFooter->getString(old_name);
|
||||||
Statusbar::unlock();
|
Statusbar::unlock();
|
||||||
if (!new_name.empty() && new_name != old_name)
|
if (!new_name.empty() && new_name != old_name)
|
||||||
@@ -1765,7 +1765,7 @@ void ApplyFilter::run()
|
|||||||
std::string filter = f->currentFilter();
|
std::string filter = f->currentFilter();
|
||||||
|
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << NC::fmtBold << "Apply filter: " << NC::fmtBoldEnd;
|
Statusbar::put() << NC::Format::Bold << "Apply filter: " << NC::Format::NoBold;
|
||||||
wFooter->setGetStringHelper(Statusbar::Helpers::ApplyFilterImmediately(f, ToWString(filter)));
|
wFooter->setGetStringHelper(Statusbar::Helpers::ApplyFilterImmediately(f, ToWString(filter)));
|
||||||
wFooter->getString(filter);
|
wFooter->getString(filter);
|
||||||
wFooter->setGetStringHelper(Statusbar::Helpers::getString);
|
wFooter->setGetStringHelper(Statusbar::Helpers::getString);
|
||||||
@@ -1811,7 +1811,7 @@ void Find::run()
|
|||||||
Statusbar::msg("Searching...");
|
Statusbar::msg("Searching...");
|
||||||
auto s = static_cast<Screen<NC::Scrollpad> *>(myScreen);
|
auto s = static_cast<Screen<NC::Scrollpad> *>(myScreen);
|
||||||
s->main().removeProperties();
|
s->main().removeProperties();
|
||||||
Statusbar::msg("%s", findme.empty() || s->main().setProperties(NC::fmtReverse, findme, NC::fmtReverseEnd) ? "Done" : "No matching patterns found");
|
Statusbar::msg("%s", findme.empty() || s->main().setProperties(NC::Format::Reverse, findme, NC::Format::NoReverse) ? "Done" : "No matching patterns found");
|
||||||
s->main().flush();
|
s->main().flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1874,7 +1874,7 @@ void ToggleReplayGainMode::run()
|
|||||||
using Global::wFooter;
|
using Global::wFooter;
|
||||||
|
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << "Replay gain mode? [" << NC::fmtBold << 'o' << NC::fmtBoldEnd << "ff/" << NC::fmtBold << 't' << NC::fmtBoldEnd << "rack/" << NC::fmtBold << 'a' << NC::fmtBoldEnd << "lbum]";
|
Statusbar::put() << "Replay gain mode? [" << NC::Format::Bold << 'o' << NC::Format::NoBold << "ff/" << NC::Format::Bold << 't' << NC::Format::NoBold << "rack/" << NC::Format::Bold << 'a' << NC::Format::NoBold << "lbum]";
|
||||||
wFooter->refresh();
|
wFooter->refresh();
|
||||||
int answer = 0;
|
int answer = 0;
|
||||||
do
|
do
|
||||||
@@ -1918,7 +1918,7 @@ void AddRandomItems::run()
|
|||||||
using Global::wFooter;
|
using Global::wFooter;
|
||||||
|
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << "Add random? [" << NC::fmtBold << 's' << NC::fmtBoldEnd << "ongs/" << NC::fmtBold << 'a' << NC::fmtBoldEnd << "rtists/al" << NC::fmtBold << 'b' << NC::fmtBoldEnd << "ums] ";
|
Statusbar::put() << "Add random? [" << NC::Format::Bold << 's' << NC::Format::NoBold << "ongs/" << NC::Format::Bold << 'a' << NC::Format::NoBold << "rtists/al" << NC::Format::Bold << 'b' << NC::Format::NoBold << "ums] ";
|
||||||
wFooter->refresh();
|
wFooter->refresh();
|
||||||
int answer = 0;
|
int answer = 0;
|
||||||
do
|
do
|
||||||
@@ -1988,7 +1988,7 @@ void ToggleLibraryTagType::run()
|
|||||||
using Global::wFooter;
|
using Global::wFooter;
|
||||||
|
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << "Tag type? [" << NC::fmtBold << 'a' << NC::fmtBoldEnd << "rtist/album" << NC::fmtBold << 'A' << NC::fmtBoldEnd << "rtist/" << NC::fmtBold << 'y' << NC::fmtBoldEnd << "ear/" << NC::fmtBold << 'g' << NC::fmtBoldEnd << "enre/" << NC::fmtBold << 'c' << NC::fmtBoldEnd << "omposer/" << NC::fmtBold << 'p' << NC::fmtBoldEnd << "erformer] ";
|
Statusbar::put() << "Tag type? [" << NC::Format::Bold << 'a' << NC::Format::NoBold << "rtist/album" << NC::Format::Bold << 'A' << NC::Format::NoBold << "rtist/" << NC::Format::Bold << 'y' << NC::Format::NoBold << "ear/" << NC::Format::Bold << 'g' << NC::Format::NoBold << "enre/" << NC::Format::Bold << 'c' << NC::Format::NoBold << "omposer/" << NC::Format::Bold << 'p' << NC::Format::NoBold << "erformer] ";
|
||||||
wFooter->refresh();
|
wFooter->refresh();
|
||||||
int answer = 0;
|
int answer = 0;
|
||||||
do
|
do
|
||||||
@@ -2603,7 +2603,7 @@ void seek()
|
|||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
|
|
||||||
*wFooter << NC::fmtBold;
|
*wFooter << NC::Format::Bold;
|
||||||
std::string tracklength;
|
std::string tracklength;
|
||||||
if (Config.new_design)
|
if (Config.new_design)
|
||||||
{
|
{
|
||||||
@@ -2634,7 +2634,7 @@ void seek()
|
|||||||
tracklength += "]";
|
tracklength += "]";
|
||||||
*wFooter << NC::XY(wFooter->getWidth()-tracklength.length(), 1) << tracklength;
|
*wFooter << NC::XY(wFooter->getWidth()-tracklength.length(), 1) << tracklength;
|
||||||
}
|
}
|
||||||
*wFooter << NC::fmtBoldEnd;
|
*wFooter << NC::Format::NoBold;
|
||||||
Progressbar::draw(songpos, Mpd.GetTotalTime());
|
Progressbar::draw(songpos, Mpd.GetTotalTime());
|
||||||
wFooter->refresh();
|
wFooter->refresh();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ bool BrowserEntryMatcher(const Regex &rx, const MPD::Item &item, bool filter);
|
|||||||
|
|
||||||
Browser::Browser() : itsBrowseLocally(0), itsScrollBeginning(0), itsBrowsedDir("/")
|
Browser::Browser() : itsBrowseLocally(0), itsScrollBeginning(0), itsBrowsedDir("/")
|
||||||
{
|
{
|
||||||
w = NC::Menu<MPD::Item>(0, MainStartY, COLS, MainHeight, Config.columns_in_browser && Config.titles_visibility ? Display::Columns(COLS) : "", Config.main_color, NC::brNone);
|
w = NC::Menu<MPD::Item>(0, MainStartY, COLS, MainHeight, Config.columns_in_browser && Config.titles_visibility ? Display::Columns(COLS) : "", Config.main_color, NC::Border::None);
|
||||||
w.setHighlightColor(Config.main_highlight_color);
|
w.setHighlightColor(Config.main_highlight_color);
|
||||||
w.cyclicScrolling(Config.use_cyclic_scrolling);
|
w.cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
w.centeredCursor(Config.centered_cursor);
|
w.centeredCursor(Config.centered_cursor);
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ Clock::Clock()
|
|||||||
{
|
{
|
||||||
Width = Config.clock_display_seconds ? 60 : 40;
|
Width = Config.clock_display_seconds ? 60 : 40;
|
||||||
|
|
||||||
m_pane = NC::Window(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::brNone);
|
m_pane = NC::Window(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::Border::None);
|
||||||
w = NC::Window((COLS-Width)/2, (MainHeight-Height)/2+MainStartY, Width, Height-1, "", Config.main_color, NC::Border(Config.main_color));
|
w = NC::Window((COLS-Width)/2, (MainHeight-Height)/2+MainStartY, Width, Height-1, "", Config.main_color, NC::Border(Config.main_color));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ void Clock::update()
|
|||||||
myPlaylist->switchTo();
|
myPlaylist->switchTo();
|
||||||
}
|
}
|
||||||
|
|
||||||
tm *time = localtime(&Global::Timer.tv_sec);
|
std::tm *time = std::localtime(&Global::Timer.tv_sec);
|
||||||
|
|
||||||
mask = 0;
|
mask = 0;
|
||||||
Set(time->tm_sec % 10, 0);
|
Set(time->tm_sec % 10, 0);
|
||||||
@@ -128,10 +128,10 @@ void Clock::update()
|
|||||||
Set(10, 17);
|
Set(10, 17);
|
||||||
|
|
||||||
char buf[64];
|
char buf[64];
|
||||||
strftime(buf, 64, "%x", time);
|
std::strftime(buf, 64, "%x", time);
|
||||||
attron(COLOR_PAIR(Config.main_color));
|
attron(COLOR_PAIR(int(Config.main_color)));
|
||||||
mvprintw(w.getStarty()+w.getHeight(), w.getStartX()+(w.getWidth()-strlen(buf))/2, "%s", buf);
|
mvprintw(w.getStarty()+w.getHeight(), w.getStartX()+(w.getWidth()-strlen(buf))/2, "%s", buf);
|
||||||
attroff(COLOR_PAIR(Config.main_color));
|
attroff(COLOR_PAIR(int(Config.main_color)));
|
||||||
refresh();
|
refresh();
|
||||||
|
|
||||||
for (int k = 0; k < 6; ++k)
|
for (int k = 0; k < 6; ++k)
|
||||||
@@ -140,7 +140,7 @@ void Clock::update()
|
|||||||
next[k] = 0;
|
next[k] = 0;
|
||||||
for (int s = 1; s >= 0; --s)
|
for (int s = 1; s >= 0; --s)
|
||||||
{
|
{
|
||||||
w << (s ? NC::fmtReverse : NC::fmtReverseEnd);
|
w << (s ? NC::Format::Reverse : NC::Format::NoReverse);
|
||||||
for (int i = 0; i < 6; ++i)
|
for (int i = 0; i < 6; ++i)
|
||||||
{
|
{
|
||||||
long a = (newer[i] ^ older[i]) & (s ? newer : older)[i];
|
long a = (newer[i] ^ older[i]) & (s ? newer : older)[i];
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ void setProperties(NC::Menu<T> &menu, const MPD::Song &s, const ProxySongList &p
|
|||||||
}
|
}
|
||||||
if (separate_albums)
|
if (separate_albums)
|
||||||
{
|
{
|
||||||
menu << NC::fmtUnderline;
|
menu << NC::Format::Underline;
|
||||||
mvwhline(menu.raw(), menu.getY(), 0, KEY_SPACE, menu.getWidth());
|
mvwhline(menu.raw(), menu.getY(), 0, KEY_SPACE, menu.getWidth());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ void showSongs(NC::Menu<T> &menu, const MPD::Song &s, const ProxySongList &pl, c
|
|||||||
if (is_now_playing)
|
if (is_now_playing)
|
||||||
menu << Config.now_playing_suffix;
|
menu << Config.now_playing_suffix;
|
||||||
if (separate_albums)
|
if (separate_albums)
|
||||||
menu << NC::fmtUnderlineEnd;
|
menu << NC::Format::NoUnderline;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@@ -232,7 +232,7 @@ void showSongsInColumns(NC::Menu<T> &menu, const MPD::Song &s, const ProxySongLi
|
|||||||
tag = ToWString(Config.empty_tag);
|
tag = ToWString(Config.empty_tag);
|
||||||
wideCut(tag, width);
|
wideCut(tag, width);
|
||||||
|
|
||||||
if (!discard_colors && it->color != NC::clDefault)
|
if (!discard_colors && it->color != NC::Color::Default)
|
||||||
menu << it->color;
|
menu << it->color;
|
||||||
|
|
||||||
int x_off = 0;
|
int x_off = 0;
|
||||||
@@ -252,8 +252,8 @@ void showSongsInColumns(NC::Menu<T> &menu, const MPD::Song &s, const ProxySongLi
|
|||||||
remained_width -= width+1;
|
remained_width -= width+1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!discard_colors && it->color != NC::clDefault)
|
if (!discard_colors && it->color != NC::Color::Default)
|
||||||
menu << NC::clEnd;
|
menu << NC::Color::End;
|
||||||
}
|
}
|
||||||
|
|
||||||
// here comes the shitty part, second chapter. here we apply
|
// here comes the shitty part, second chapter. here we apply
|
||||||
@@ -272,7 +272,7 @@ void showSongsInColumns(NC::Menu<T> &menu, const MPD::Song &s, const ProxySongLi
|
|||||||
menu.goToXY(menu.getWidth() - Config.selected_item_suffix_length, y);
|
menu.goToXY(menu.getWidth() - Config.selected_item_suffix_length, y);
|
||||||
|
|
||||||
if (separate_albums)
|
if (separate_albums)
|
||||||
menu << NC::fmtUnderlineEnd;
|
menu << NC::Format::NoUnderline;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -374,7 +374,7 @@ void Display::Tags(NC::Menu<MPD::MutableSong> &menu)
|
|||||||
menu << Charset::utf8ToLocale(s.getName());
|
menu << Charset::utf8ToLocale(s.getName());
|
||||||
else
|
else
|
||||||
menu << Charset::utf8ToLocale(s.getName())
|
menu << Charset::utf8ToLocale(s.getName())
|
||||||
<< Config.color2 << " -> " << NC::clEnd
|
<< Config.color2 << " -> " << NC::Color::End
|
||||||
<< Charset::utf8ToLocale(s.getNewURI());
|
<< Charset::utf8ToLocale(s.getNewURI());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ std::string keyToString(const Key &key, bool *print_backspace)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Help::Help()
|
Help::Help()
|
||||||
: Screen(NC::Scrollpad(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::brNone))
|
: Screen(NC::Scrollpad(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::Border::None))
|
||||||
{
|
{
|
||||||
GetKeybindings();
|
GetKeybindings();
|
||||||
w.flush();
|
w.flush();
|
||||||
@@ -144,8 +144,8 @@ std::string Help::DisplayKeys(const Actions::Type at)
|
|||||||
|
|
||||||
void Help::Section(const char *type_, const char *title_)
|
void Help::Section(const char *type_, const char *title_)
|
||||||
{
|
{
|
||||||
w << "\n " << NC::fmtBold << type_ << " - ";
|
w << "\n " << NC::Format::Bold << type_ << " - ";
|
||||||
w << title_ << NC::fmtBoldEnd << "\n\n";
|
w << title_ << NC::Format::NoBold << "\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
void Help::KeyDesc(const Actions::Type at, const char *desc)
|
void Help::KeyDesc(const Actions::Type at, const char *desc)
|
||||||
@@ -162,7 +162,7 @@ void Help::MouseDesc(std::string action, const char *desc, bool indent)
|
|||||||
|
|
||||||
void Help::MouseColumn(const char *column)
|
void Help::MouseColumn(const char *column)
|
||||||
{
|
{
|
||||||
w << NC::fmtBold << " " << column << " column:\n" << NC::fmtBoldEnd;
|
w << NC::Format::Bold << " " << column << " column:\n" << NC::Format::NoBold;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Help::GetKeybindings()
|
void Help::GetKeybindings()
|
||||||
|
|||||||
@@ -358,16 +358,16 @@ void stringToBuffer(Iterator first, Iterator last, NC::BasicBuffer<typename Iter
|
|||||||
switch (*it)
|
switch (*it)
|
||||||
{
|
{
|
||||||
case 'b':
|
case 'b':
|
||||||
buf << NC::fmtBold;
|
buf << NC::Format::Bold;
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
buf << NC::fmtUnderline;
|
buf << NC::Format::Underline;
|
||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
buf << NC::fmtAltCharset;
|
buf << NC::Format::AltCharset;
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
buf << NC::fmtReverse;
|
buf << NC::Format::Reverse;
|
||||||
break;
|
break;
|
||||||
case '/':
|
case '/':
|
||||||
if (++it == last)
|
if (++it == last)
|
||||||
@@ -378,16 +378,16 @@ void stringToBuffer(Iterator first, Iterator last, NC::BasicBuffer<typename Iter
|
|||||||
switch (*it)
|
switch (*it)
|
||||||
{
|
{
|
||||||
case 'b':
|
case 'b':
|
||||||
buf << NC::fmtBoldEnd;
|
buf << NC::Format::NoBold;
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
buf << NC::fmtUnderlineEnd;
|
buf << NC::Format::NoUnderline;
|
||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
buf << NC::fmtAltCharsetEnd;
|
buf << NC::Format::NoAltCharset;
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
buf << NC::fmtReverseEnd;
|
buf << NC::Format::NoReverse;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
buf << '$' << *--it;
|
buf << '$' << *--it;
|
||||||
@@ -464,7 +464,7 @@ template <typename T> void ShowTime(T &buf, size_t length, bool short_names)
|
|||||||
template <typename BufferT> void ShowTag(BufferT &buf, const std::string &tag)
|
template <typename BufferT> void ShowTag(BufferT &buf, const std::string &tag)
|
||||||
{
|
{
|
||||||
if (tag.empty())
|
if (tag.empty())
|
||||||
buf << Config.empty_tags_color << Config.empty_tag << NC::clEnd;
|
buf << Config.empty_tags_color << Config.empty_tag << NC::Color::End;
|
||||||
else
|
else
|
||||||
buf << tag;
|
buf << tag;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ using Global::MainStartY;
|
|||||||
Lastfm *myLastfm;
|
Lastfm *myLastfm;
|
||||||
|
|
||||||
Lastfm::Lastfm()
|
Lastfm::Lastfm()
|
||||||
: Screen(NC::Scrollpad(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::brNone))
|
: Screen(NC::Scrollpad(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::Border::None))
|
||||||
, isReadyToTake(0), isDownloadInProgress(0)
|
, isReadyToTake(0), isDownloadInProgress(0)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ void Lastfm::Download()
|
|||||||
itsService->colorizeOutput(w);
|
itsService->colorizeOutput(w);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
w << NC::clRed << result.second << NC::clEnd;
|
w << NC::Color::Red << result.second << NC::Color::End;
|
||||||
|
|
||||||
isReadyToTake = 1;
|
isReadyToTake = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,8 +104,8 @@ bool ArtistInfo::checkArgs(const Args &args)
|
|||||||
|
|
||||||
void ArtistInfo::colorizeOutput(NC::Scrollpad &w)
|
void ArtistInfo::colorizeOutput(NC::Scrollpad &w)
|
||||||
{
|
{
|
||||||
w.setProperties(NC::fmtBold, "\n\nSimilar artists:\n", NC::fmtBoldEnd, 0);
|
w.setProperties(NC::Format::Bold, "\n\nSimilar artists:\n", NC::Format::NoBold, 0);
|
||||||
w.setProperties(Config.color2, "\n * ", NC::clEnd, 0);
|
w.setProperties(Config.color2, "\n * ", NC::Color::End, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ArtistInfo::parse(std::string &data)
|
bool ArtistInfo::parse(std::string &data)
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ size_t Lyrics::itsWorkersNumber = 0;
|
|||||||
Lyrics *myLyrics;
|
Lyrics *myLyrics;
|
||||||
|
|
||||||
Lyrics::Lyrics()
|
Lyrics::Lyrics()
|
||||||
: Screen(NC::Scrollpad(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::brNone))
|
: Screen(NC::Scrollpad(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::Border::None))
|
||||||
, ReloadNP(0),
|
, ReloadNP(0),
|
||||||
#ifdef HAVE_CURL_CURL_H
|
#ifdef HAVE_CURL_CURL_H
|
||||||
isReadyToTake(0), isDownloadInProgress(0),
|
isReadyToTake(0), isDownloadInProgress(0),
|
||||||
@@ -235,10 +235,10 @@ void *Lyrics::Download()
|
|||||||
bool fetcher_defined = itsFetcher && *itsFetcher;
|
bool fetcher_defined = itsFetcher && *itsFetcher;
|
||||||
for (LyricsFetcher **plugin = fetcher_defined ? itsFetcher : lyricsPlugins; *plugin != 0; ++plugin)
|
for (LyricsFetcher **plugin = fetcher_defined ? itsFetcher : lyricsPlugins; *plugin != 0; ++plugin)
|
||||||
{
|
{
|
||||||
w << "Fetching lyrics from " << NC::fmtBold << (*plugin)->name() << NC::fmtBoldEnd << "... ";
|
w << "Fetching lyrics from " << NC::Format::Bold << (*plugin)->name() << NC::Format::NoBold << "... ";
|
||||||
result = (*plugin)->fetch(artist, title_);
|
result = (*plugin)->fetch(artist, title_);
|
||||||
if (result.first == false)
|
if (result.first == false)
|
||||||
w << NC::clRed << result.second << NC::clEnd << '\n';
|
w << NC::Color::Red << result.second << NC::Color::End << '\n';
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
if (fetcher_defined)
|
if (fetcher_defined)
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ MediaLibrary::MediaLibrary()
|
|||||||
itsRightColWidth = COLS-COLS/3*2-1;
|
itsRightColWidth = COLS-COLS/3*2-1;
|
||||||
itsRightColStartX = itsLeftColWidth+itsMiddleColWidth+2;
|
itsRightColStartX = itsLeftColWidth+itsMiddleColWidth+2;
|
||||||
|
|
||||||
Tags = NC::Menu<PrimaryTag>(0, MainStartY, itsLeftColWidth, MainHeight, Config.titles_visibility ? tagTypeToString(Config.media_lib_primary_tag) + "s" : "", Config.main_color, NC::brNone);
|
Tags = NC::Menu<PrimaryTag>(0, MainStartY, itsLeftColWidth, MainHeight, Config.titles_visibility ? tagTypeToString(Config.media_lib_primary_tag) + "s" : "", Config.main_color, NC::Border::None);
|
||||||
Tags.setHighlightColor(Config.active_column_color);
|
Tags.setHighlightColor(Config.active_column_color);
|
||||||
Tags.cyclicScrolling(Config.use_cyclic_scrolling);
|
Tags.cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
Tags.centeredCursor(Config.centered_cursor);
|
Tags.centeredCursor(Config.centered_cursor);
|
||||||
@@ -161,7 +161,7 @@ MediaLibrary::MediaLibrary()
|
|||||||
menu << Charset::utf8ToLocale(tag);
|
menu << Charset::utf8ToLocale(tag);
|
||||||
});
|
});
|
||||||
|
|
||||||
Albums = NC::Menu<AlbumEntry>(itsMiddleColStartX, MainStartY, itsMiddleColWidth, MainHeight, Config.titles_visibility ? "Albums" : "", Config.main_color, NC::brNone);
|
Albums = NC::Menu<AlbumEntry>(itsMiddleColStartX, MainStartY, itsMiddleColWidth, MainHeight, Config.titles_visibility ? "Albums" : "", Config.main_color, NC::Border::None);
|
||||||
Albums.setHighlightColor(Config.main_highlight_color);
|
Albums.setHighlightColor(Config.main_highlight_color);
|
||||||
Albums.cyclicScrolling(Config.use_cyclic_scrolling);
|
Albums.cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
Albums.centeredCursor(Config.centered_cursor);
|
Albums.centeredCursor(Config.centered_cursor);
|
||||||
@@ -171,7 +171,7 @@ MediaLibrary::MediaLibrary()
|
|||||||
menu << Charset::utf8ToLocale(AlbumToString(menu.drawn()->value()));
|
menu << Charset::utf8ToLocale(AlbumToString(menu.drawn()->value()));
|
||||||
});
|
});
|
||||||
|
|
||||||
Songs = NC::Menu<MPD::Song>(itsRightColStartX, MainStartY, itsRightColWidth, MainHeight, Config.titles_visibility ? "Songs" : "", Config.main_color, NC::brNone);
|
Songs = NC::Menu<MPD::Song>(itsRightColStartX, MainStartY, itsRightColWidth, MainHeight, Config.titles_visibility ? "Songs" : "", Config.main_color, NC::Border::None);
|
||||||
Songs.setHighlightColor(Config.main_highlight_color);
|
Songs.setHighlightColor(Config.main_highlight_color);
|
||||||
Songs.cyclicScrolling(Config.use_cyclic_scrolling);
|
Songs.cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
Songs.centeredCursor(Config.centered_cursor);
|
Songs.centeredCursor(Config.centered_cursor);
|
||||||
|
|||||||
10
src/menu.h
10
src/menu.h
@@ -631,10 +631,10 @@ template <typename T> void Menu<T>::refresh()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((*m_options_ptr)[i]->isBold())
|
if ((*m_options_ptr)[i]->isBold())
|
||||||
*this << fmtBold;
|
*this << Format::Bold;
|
||||||
if (m_highlight_enabled && i == m_highlight)
|
if (m_highlight_enabled && i == m_highlight)
|
||||||
{
|
{
|
||||||
*this << fmtReverse;
|
*this << Format::Reverse;
|
||||||
*this << m_highlight_color;
|
*this << m_highlight_color;
|
||||||
}
|
}
|
||||||
mvwhline(m_window, line, 0, KEY_SPACE, m_width);
|
mvwhline(m_window, line, 0, KEY_SPACE, m_width);
|
||||||
@@ -646,11 +646,11 @@ template <typename T> void Menu<T>::refresh()
|
|||||||
*this << m_selected_suffix;
|
*this << m_selected_suffix;
|
||||||
if (m_highlight_enabled && i == m_highlight)
|
if (m_highlight_enabled && i == m_highlight)
|
||||||
{
|
{
|
||||||
*this << clEnd;
|
*this << Color::End;
|
||||||
*this << fmtReverseEnd;
|
*this << Format::NoReverse;
|
||||||
}
|
}
|
||||||
if ((*m_options_ptr)[i]->isBold())
|
if ((*m_options_ptr)[i]->isBold())
|
||||||
*this << fmtBoldEnd;
|
*this << Format::NoBold;
|
||||||
}
|
}
|
||||||
Window::refresh();
|
Window::refresh();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ int main(int argc, char **argv)
|
|||||||
Actions::OriginalStatusbarVisibility = Config.statusbar_visibility;
|
Actions::OriginalStatusbarVisibility = Config.statusbar_visibility;
|
||||||
|
|
||||||
if (!Config.titles_visibility)
|
if (!Config.titles_visibility)
|
||||||
wattron(stdscr, COLOR_PAIR(Config.main_color));
|
wattron(stdscr, COLOR_PAIR(int(Config.main_color)));
|
||||||
|
|
||||||
if (Config.new_design)
|
if (Config.new_design)
|
||||||
Config.statusbar_visibility = 0;
|
Config.statusbar_visibility = 0;
|
||||||
@@ -154,11 +154,11 @@ int main(int argc, char **argv)
|
|||||||
Actions::validateScreenSize();
|
Actions::validateScreenSize();
|
||||||
Actions::initializeScreens();
|
Actions::initializeScreens();
|
||||||
|
|
||||||
wHeader = new NC::Window(0, 0, COLS, Actions::HeaderHeight, "", Config.header_color, NC::brNone);
|
wHeader = new NC::Window(0, 0, COLS, Actions::HeaderHeight, "", Config.header_color, NC::Border::None);
|
||||||
if (Config.header_visibility || Config.new_design)
|
if (Config.header_visibility || Config.new_design)
|
||||||
wHeader->display();
|
wHeader->display();
|
||||||
|
|
||||||
wFooter = new NC::Window(0, Actions::FooterStartY, COLS, Actions::FooterHeight, "", Config.statusbar_color, NC::brNone);
|
wFooter = new NC::Window(0, Actions::FooterStartY, COLS, Actions::FooterHeight, "", Config.statusbar_color, NC::Border::None);
|
||||||
wFooter->setTimeout(500);
|
wFooter->setTimeout(500);
|
||||||
wFooter->setGetStringHelper(Statusbar::Helpers::getString);
|
wFooter->setGetStringHelper(Statusbar::Helpers::getString);
|
||||||
if (Mpd.SupportsIdle())
|
if (Mpd.SupportsIdle())
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ using Global::myScreen;
|
|||||||
Outputs *myOutputs;
|
Outputs *myOutputs;
|
||||||
|
|
||||||
Outputs::Outputs()
|
Outputs::Outputs()
|
||||||
: Screen(NC::Menu<MPD::Output>(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::brNone))
|
: Screen(NC::Menu<MPD::Output>(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::Border::None))
|
||||||
{
|
{
|
||||||
w.cyclicScrolling(Config.use_cyclic_scrolling);
|
w.cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
w.centeredCursor(Config.centered_cursor);
|
w.centeredCursor(Config.centered_cursor);
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ bool playlistEntryMatcher(const Regex &rx, const MPD::Song &s);
|
|||||||
|
|
||||||
Playlist::Playlist() : itsTotalLength(0), itsRemainingTime(0), itsScrollBegin(0)
|
Playlist::Playlist() : itsTotalLength(0), itsRemainingTime(0), itsScrollBegin(0)
|
||||||
{
|
{
|
||||||
w = NC::Menu<MPD::Song>(0, MainStartY, COLS, MainHeight, Config.columns_in_playlist && Config.titles_visibility ? Display::Columns(COLS) : "", Config.main_color, NC::brNone);
|
w = NC::Menu<MPD::Song>(0, MainStartY, COLS, MainHeight, Config.columns_in_playlist && Config.titles_visibility ? Display::Columns(COLS) : "", Config.main_color, NC::Border::None);
|
||||||
w.cyclicScrolling(Config.use_cyclic_scrolling);
|
w.cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
w.centeredCursor(Config.centered_cursor);
|
w.centeredCursor(Config.centered_cursor);
|
||||||
w.setHighlightColor(Config.main_highlight_color);
|
w.setHighlightColor(Config.main_highlight_color);
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ PlaylistEditor::PlaylistEditor()
|
|||||||
RightColumnStartX = LeftColumnWidth+1;
|
RightColumnStartX = LeftColumnWidth+1;
|
||||||
RightColumnWidth = COLS-LeftColumnWidth-1;
|
RightColumnWidth = COLS-LeftColumnWidth-1;
|
||||||
|
|
||||||
Playlists = NC::Menu<std::string>(0, MainStartY, LeftColumnWidth, MainHeight, Config.titles_visibility ? "Playlists" : "", Config.main_color, NC::brNone);
|
Playlists = NC::Menu<std::string>(0, MainStartY, LeftColumnWidth, MainHeight, Config.titles_visibility ? "Playlists" : "", Config.main_color, NC::Border::None);
|
||||||
Playlists.setHighlightColor(Config.active_column_color);
|
Playlists.setHighlightColor(Config.active_column_color);
|
||||||
Playlists.cyclicScrolling(Config.use_cyclic_scrolling);
|
Playlists.cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
Playlists.centeredCursor(Config.centered_cursor);
|
Playlists.centeredCursor(Config.centered_cursor);
|
||||||
@@ -72,7 +72,7 @@ PlaylistEditor::PlaylistEditor()
|
|||||||
menu << Charset::utf8ToLocale(menu.drawn()->value());
|
menu << Charset::utf8ToLocale(menu.drawn()->value());
|
||||||
});
|
});
|
||||||
|
|
||||||
Content = NC::Menu<MPD::Song>(RightColumnStartX, MainStartY, RightColumnWidth, MainHeight, Config.titles_visibility ? "Playlist content" : "", Config.main_color, NC::brNone);
|
Content = NC::Menu<MPD::Song>(RightColumnStartX, MainStartY, RightColumnWidth, MainHeight, Config.titles_visibility ? "Playlist content" : "", Config.main_color, NC::Border::None);
|
||||||
Content.setHighlightColor(Config.main_highlight_color);
|
Content.setHighlightColor(Config.main_highlight_color);
|
||||||
Content.cyclicScrolling(Config.use_cyclic_scrolling);
|
Content.cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
Content.centeredCursor(Config.centered_cursor);
|
Content.centeredCursor(Config.centered_cursor);
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ namespace {//
|
|||||||
|
|
||||||
void drawScreenSeparator(int x)
|
void drawScreenSeparator(int x)
|
||||||
{
|
{
|
||||||
attron(COLOR_PAIR(Config.main_color));
|
attron(COLOR_PAIR(int(Config.main_color)));
|
||||||
mvvline(Global::MainStartY, x, 0, Global::MainHeight);
|
mvvline(Global::MainStartY, x, 0, Global::MainHeight);
|
||||||
attroff(COLOR_PAIR(Config.main_color));
|
attroff(COLOR_PAIR(int(Config.main_color)));
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ size_t SearchEngine::ResetButton = 16;
|
|||||||
size_t SearchEngine::SearchButton = 15;
|
size_t SearchEngine::SearchButton = 15;
|
||||||
|
|
||||||
SearchEngine::SearchEngine()
|
SearchEngine::SearchEngine()
|
||||||
: Screen(NC::Menu<SEItem>(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::brNone))
|
: Screen(NC::Menu<SEItem>(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::Border::None))
|
||||||
{
|
{
|
||||||
w.setHighlightColor(Config.main_highlight_color);
|
w.setHighlightColor(Config.main_highlight_color);
|
||||||
w.cyclicScrolling(Config.use_cyclic_scrolling);
|
w.cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
@@ -149,23 +149,23 @@ void SearchEngine::enterPressed()
|
|||||||
if (option < ConstraintsNumber)
|
if (option < ConstraintsNumber)
|
||||||
{
|
{
|
||||||
std::string constraint = ConstraintsNames[option];
|
std::string constraint = ConstraintsNames[option];
|
||||||
Statusbar::put() << NC::fmtBold << constraint << NC::fmtBoldEnd << ": ";
|
Statusbar::put() << NC::Format::Bold << constraint << NC::Format::NoBold << ": ";
|
||||||
itsConstraints[option] = Global::wFooter->getString(itsConstraints[option]);
|
itsConstraints[option] = Global::wFooter->getString(itsConstraints[option]);
|
||||||
w.current().value().buffer().clear();
|
w.current().value().buffer().clear();
|
||||||
constraint.resize(13, ' ');
|
constraint.resize(13, ' ');
|
||||||
w.current().value().buffer() << NC::fmtBold << constraint << NC::fmtBoldEnd << ": ";
|
w.current().value().buffer() << NC::Format::Bold << constraint << NC::Format::NoBold << ": ";
|
||||||
ShowTag(w.current().value().buffer(), itsConstraints[option]);
|
ShowTag(w.current().value().buffer(), itsConstraints[option]);
|
||||||
}
|
}
|
||||||
else if (option == ConstraintsNumber+1)
|
else if (option == ConstraintsNumber+1)
|
||||||
{
|
{
|
||||||
Config.search_in_db = !Config.search_in_db;
|
Config.search_in_db = !Config.search_in_db;
|
||||||
w.current().value().buffer() << NC::fmtBold << "Search in:" << NC::fmtBoldEnd << ' ' << (Config.search_in_db ? "Database" : "Current playlist");
|
w.current().value().buffer() << NC::Format::Bold << "Search in:" << NC::Format::NoBold << ' ' << (Config.search_in_db ? "Database" : "Current playlist");
|
||||||
}
|
}
|
||||||
else if (option == ConstraintsNumber+2)
|
else if (option == ConstraintsNumber+2)
|
||||||
{
|
{
|
||||||
if (!*++SearchMode)
|
if (!*++SearchMode)
|
||||||
SearchMode = &SearchModes[0];
|
SearchMode = &SearchModes[0];
|
||||||
w.current().value().buffer() << NC::fmtBold << "Search mode:" << NC::fmtBoldEnd << ' ' << *SearchMode;
|
w.current().value().buffer() << NC::Format::Bold << "Search mode:" << NC::Format::NoBold << ' ' << *SearchMode;
|
||||||
}
|
}
|
||||||
else if (option == SearchButton)
|
else if (option == SearchButton)
|
||||||
{
|
{
|
||||||
@@ -182,7 +182,7 @@ void SearchEngine::enterPressed()
|
|||||||
found += 3; // don't count options inserted below
|
found += 3; // don't count options inserted below
|
||||||
w.insertSeparator(ResetButton+1);
|
w.insertSeparator(ResetButton+1);
|
||||||
w.insertItem(ResetButton+2, SEItem(), 1, 1);
|
w.insertItem(ResetButton+2, SEItem(), 1, 1);
|
||||||
w.at(ResetButton+2).value().mkBuffer() << Config.color1 << "Search results: " << Config.color2 << "Found " << found << (found > 1 ? " songs" : " song") << NC::clDefault;
|
w.at(ResetButton+2).value().mkBuffer() << Config.color1 << "Search results: " << Config.color2 << "Found " << found << (found > 1 ? " songs" : " song") << NC::Color::Default;
|
||||||
w.insertSeparator(ResetButton+3);
|
w.insertSeparator(ResetButton+3);
|
||||||
markSongsInPlaylist(proxySongList());
|
markSongsInPlaylist(proxySongList());
|
||||||
Statusbar::msg("Searching finished");
|
Statusbar::msg("Searching finished");
|
||||||
@@ -351,12 +351,12 @@ void SearchEngine::Prepare()
|
|||||||
{
|
{
|
||||||
std::string constraint = ConstraintsNames[i];
|
std::string constraint = ConstraintsNames[i];
|
||||||
constraint.resize(13, ' ');
|
constraint.resize(13, ' ');
|
||||||
w[i].value().mkBuffer() << NC::fmtBold << constraint << NC::fmtBoldEnd << ": ";
|
w[i].value().mkBuffer() << NC::Format::Bold << constraint << NC::Format::NoBold << ": ";
|
||||||
ShowTag(w[i].value().buffer(), itsConstraints[i]);
|
ShowTag(w[i].value().buffer(), itsConstraints[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
w.at(ConstraintsNumber+1).value().mkBuffer() << NC::fmtBold << "Search in:" << NC::fmtBoldEnd << ' ' << (Config.search_in_db ? "Database" : "Current playlist");
|
w.at(ConstraintsNumber+1).value().mkBuffer() << NC::Format::Bold << "Search in:" << NC::Format::NoBold << ' ' << (Config.search_in_db ? "Database" : "Current playlist");
|
||||||
w.at(ConstraintsNumber+2).value().mkBuffer() << NC::fmtBold << "Search mode:" << NC::fmtBoldEnd << ' ' << *SearchMode;
|
w.at(ConstraintsNumber+2).value().mkBuffer() << NC::Format::Bold << "Search mode:" << NC::Format::NoBold << ' ' << *SearchMode;
|
||||||
|
|
||||||
w.at(SearchButton).value().mkBuffer() << "Search";
|
w.at(SearchButton).value().mkBuffer() << "Search";
|
||||||
w.at(ResetButton).value().mkBuffer() << "Reset";
|
w.at(ResetButton).value().mkBuffer() << "Reset";
|
||||||
|
|||||||
@@ -84,26 +84,26 @@ void ServerInfo::update()
|
|||||||
|
|
||||||
w.clear();
|
w.clear();
|
||||||
|
|
||||||
w << NC::fmtBold << "Version: " << NC::fmtBoldEnd << "0." << Mpd.Version() << ".*\n";
|
w << NC::Format::Bold << "Version: " << NC::Format::NoBold << "0." << Mpd.Version() << ".*\n";
|
||||||
w << NC::fmtBold << "Uptime: " << NC::fmtBoldEnd;
|
w << NC::Format::Bold << "Uptime: " << NC::Format::NoBold;
|
||||||
ShowTime(w, stats.uptime(), 1);
|
ShowTime(w, stats.uptime(), 1);
|
||||||
w << '\n';
|
w << '\n';
|
||||||
w << NC::fmtBold << "Time playing: " << NC::fmtBoldEnd << MPD::Song::ShowTime(stats.playTime()) << '\n';
|
w << NC::Format::Bold << "Time playing: " << NC::Format::NoBold << MPD::Song::ShowTime(stats.playTime()) << '\n';
|
||||||
w << '\n';
|
w << '\n';
|
||||||
w << NC::fmtBold << "Total playtime: " << NC::fmtBoldEnd;
|
w << NC::Format::Bold << "Total playtime: " << NC::Format::NoBold;
|
||||||
ShowTime(w, stats.dbPlayTime(), 1);
|
ShowTime(w, stats.dbPlayTime(), 1);
|
||||||
w << '\n';
|
w << '\n';
|
||||||
w << NC::fmtBold << "Artist names: " << NC::fmtBoldEnd << stats.artists() << '\n';
|
w << NC::Format::Bold << "Artist names: " << NC::Format::NoBold << stats.artists() << '\n';
|
||||||
w << NC::fmtBold << "Album names: " << NC::fmtBoldEnd << stats.albums() << '\n';
|
w << NC::Format::Bold << "Album names: " << NC::Format::NoBold << stats.albums() << '\n';
|
||||||
w << NC::fmtBold << "Songs in database: " << NC::fmtBoldEnd << stats.songs() << '\n';
|
w << NC::Format::Bold << "Songs in database: " << NC::Format::NoBold << stats.songs() << '\n';
|
||||||
w << '\n';
|
w << '\n';
|
||||||
w << NC::fmtBold << "Last DB update: " << NC::fmtBoldEnd << Timestamp(stats.dbUpdateTime()) << '\n';
|
w << NC::Format::Bold << "Last DB update: " << NC::Format::NoBold << Timestamp(stats.dbUpdateTime()) << '\n';
|
||||||
w << '\n';
|
w << '\n';
|
||||||
w << NC::fmtBold << "URL Handlers:" << NC::fmtBoldEnd;
|
w << NC::Format::Bold << "URL Handlers:" << NC::Format::NoBold;
|
||||||
for (auto it = itsURLHandlers.begin(); it != itsURLHandlers.end(); ++it)
|
for (auto it = itsURLHandlers.begin(); it != itsURLHandlers.end(); ++it)
|
||||||
w << (it != itsURLHandlers.begin() ? ", " : " ") << *it;
|
w << (it != itsURLHandlers.begin() ? ", " : " ") << *it;
|
||||||
w << "\n\n";
|
w << "\n\n";
|
||||||
w << NC::fmtBold << "Tag Types:" << NC::fmtBoldEnd;
|
w << NC::Format::Bold << "Tag Types:" << NC::Format::NoBold;
|
||||||
for (auto it = itsTagTypes.begin(); it != itsTagTypes.end(); ++it)
|
for (auto it = itsTagTypes.begin(); it != itsTagTypes.end(); ++it)
|
||||||
w << (it != itsTagTypes.begin() ? ", " : " ") << *it;
|
w << (it != itsTagTypes.begin() ? ", " : " ") << *it;
|
||||||
|
|
||||||
|
|||||||
@@ -58,35 +58,6 @@ Configuration Config;
|
|||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
NC::Color stringToColor(const std::string &color)
|
|
||||||
{
|
|
||||||
NC::Color result = NC::clDefault;
|
|
||||||
|
|
||||||
if (color == "black")
|
|
||||||
result = NC::clBlack;
|
|
||||||
else if (color == "red")
|
|
||||||
result = NC::clRed;
|
|
||||||
else if (color == "green")
|
|
||||||
result = NC::clGreen;
|
|
||||||
else if (color == "yellow")
|
|
||||||
result = NC::clYellow;
|
|
||||||
else if (color == "blue")
|
|
||||||
result = NC::clBlue;
|
|
||||||
else if (color == "magenta")
|
|
||||||
result = NC::clMagenta;
|
|
||||||
else if (color == "cyan")
|
|
||||||
result = NC::clCyan;
|
|
||||||
else if (color == "white")
|
|
||||||
result = NC::clWhite;
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
NC::Border stringToBorder(const std::string &border)
|
|
||||||
{
|
|
||||||
return NC::Border(stringToColor(border));
|
|
||||||
}
|
|
||||||
|
|
||||||
ScreenRef intToScreen(int n)
|
ScreenRef intToScreen(int n)
|
||||||
{
|
{
|
||||||
switch (n)
|
switch (n)
|
||||||
@@ -173,32 +144,32 @@ void Configuration::SetDefaults()
|
|||||||
tag_editor_album_format = "{{(%y) }%b}";
|
tag_editor_album_format = "{{(%y) }%b}";
|
||||||
new_header_first_line = "{$b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b}";
|
new_header_first_line = "{$b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b}";
|
||||||
new_header_second_line = "{{{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}}";
|
new_header_second_line = "{{{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}}";
|
||||||
browser_playlist_prefix << NC::clRed << "playlist" << NC::clEnd << ' ';
|
browser_playlist_prefix << NC::Color::Red << "playlist" << NC::Color::End << ' ';
|
||||||
progressbar = L"=>\0";
|
progressbar = L"=>\0";
|
||||||
visualizer_chars = L"◆│";
|
visualizer_chars = L"◆│";
|
||||||
pattern = "%n - %t";
|
pattern = "%n - %t";
|
||||||
selected_item_prefix << NC::clMagenta;
|
selected_item_prefix << NC::Color::Magenta;
|
||||||
selected_item_suffix << NC::clEnd;
|
selected_item_suffix << NC::Color::End;
|
||||||
now_playing_prefix << NC::fmtBold;
|
now_playing_prefix << NC::Format::Bold;
|
||||||
now_playing_suffix << NC::fmtBoldEnd;
|
now_playing_suffix << NC::Format::NoBold;
|
||||||
modified_item_prefix << NC::clGreen << "> " << NC::clEnd;
|
modified_item_prefix << NC::Color::Green << "> " << NC::Color::End;
|
||||||
color1 = NC::clWhite;
|
color1 = NC::Color::White;
|
||||||
color2 = NC::clGreen;
|
color2 = NC::Color::Green;
|
||||||
empty_tags_color = NC::clCyan;
|
empty_tags_color = NC::Color::Cyan;
|
||||||
header_color = NC::clDefault;
|
header_color = NC::Color::Default;
|
||||||
volume_color = NC::clDefault;
|
volume_color = NC::Color::Default;
|
||||||
state_line_color = NC::clDefault;
|
state_line_color = NC::Color::Default;
|
||||||
state_flags_color = NC::clDefault;
|
state_flags_color = NC::Color::Default;
|
||||||
main_color = NC::clYellow;
|
main_color = NC::Color::Yellow;
|
||||||
main_highlight_color = main_color;
|
main_highlight_color = main_color;
|
||||||
progressbar_color = NC::clDefault;
|
progressbar_color = NC::Color::Default;
|
||||||
progressbar_elapsed_color = NC::clDefault;
|
progressbar_elapsed_color = NC::Color::Default;
|
||||||
statusbar_color = NC::clDefault;
|
statusbar_color = NC::Color::Default;
|
||||||
alternative_ui_separator_color = NC::clBlack;
|
alternative_ui_separator_color = NC::Color::Black;
|
||||||
active_column_color = NC::clRed;
|
active_column_color = NC::Color::Red;
|
||||||
window_border = NC::brGreen;
|
window_border = NC::Border::Green;
|
||||||
active_window_border = NC::brRed;
|
active_window_border = NC::Border::Red;
|
||||||
visualizer_color = NC::clYellow;
|
visualizer_color = NC::Color::Yellow;
|
||||||
media_lib_primary_tag = MPD_TAG_ARTIST;
|
media_lib_primary_tag = MPD_TAG_ARTIST;
|
||||||
enable_idle_notifications = true;
|
enable_idle_notifications = true;
|
||||||
colors_enabled = true;
|
colors_enabled = true;
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ const SongInfo::Metadata SongInfo::Tags[] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
SongInfo::SongInfo()
|
SongInfo::SongInfo()
|
||||||
: Screen(NC::Scrollpad(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::brNone))
|
: Screen(NC::Scrollpad(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::Border::None))
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
void SongInfo::resize()
|
void SongInfo::resize()
|
||||||
@@ -101,24 +101,24 @@ void SongInfo::PrepareSong(MPD::Song &s)
|
|||||||
TagLib::FileRef f(path_to_file.c_str());
|
TagLib::FileRef f(path_to_file.c_str());
|
||||||
# endif // HAVE_TAGLIB_H
|
# endif // HAVE_TAGLIB_H
|
||||||
|
|
||||||
w << NC::fmtBold << Config.color1 << "Filename: " << NC::fmtBoldEnd << Config.color2 << s.getName() << '\n' << NC::clEnd;
|
w << NC::Format::Bold << Config.color1 << "Filename: " << NC::Format::NoBold << Config.color2 << s.getName() << '\n' << NC::Color::End;
|
||||||
w << NC::fmtBold << "Directory: " << NC::fmtBoldEnd << Config.color2;
|
w << NC::Format::Bold << "Directory: " << NC::Format::NoBold << Config.color2;
|
||||||
ShowTag(w, s.getDirectory());
|
ShowTag(w, s.getDirectory());
|
||||||
w << "\n\n" << NC::clEnd;
|
w << "\n\n" << NC::Color::End;
|
||||||
w << NC::fmtBold << "Length: " << NC::fmtBoldEnd << Config.color2 << s.getLength() << '\n' << NC::clEnd;
|
w << NC::Format::Bold << "Length: " << NC::Format::NoBold << Config.color2 << s.getLength() << '\n' << NC::Color::End;
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
if (!f.isNull())
|
if (!f.isNull())
|
||||||
{
|
{
|
||||||
w << NC::fmtBold << "Bitrate: " << NC::fmtBoldEnd << Config.color2 << f.audioProperties()->bitrate() << " kbps\n" << NC::clEnd;
|
w << NC::Format::Bold << "Bitrate: " << NC::Format::NoBold << Config.color2 << f.audioProperties()->bitrate() << " kbps\n" << NC::Color::End;
|
||||||
w << NC::fmtBold << "Sample rate: " << NC::fmtBoldEnd << Config.color2 << f.audioProperties()->sampleRate() << " Hz\n" << NC::clEnd;
|
w << NC::Format::Bold << "Sample rate: " << NC::Format::NoBold << Config.color2 << f.audioProperties()->sampleRate() << " Hz\n" << NC::Color::End;
|
||||||
w << NC::fmtBold << "Channels: " << NC::fmtBoldEnd << Config.color2 << (f.audioProperties()->channels() == 1 ? "Mono" : "Stereo") << '\n' << NC::clDefault;
|
w << NC::Format::Bold << "Channels: " << NC::Format::NoBold << Config.color2 << (f.audioProperties()->channels() == 1 ? "Mono" : "Stereo") << '\n' << NC::Color::Default;
|
||||||
}
|
}
|
||||||
# endif // HAVE_TAGLIB_H
|
# endif // HAVE_TAGLIB_H
|
||||||
w << NC::clDefault;
|
w << NC::Color::Default;
|
||||||
|
|
||||||
for (const Metadata *m = Tags; m->Name; ++m)
|
for (const Metadata *m = Tags; m->Name; ++m)
|
||||||
{
|
{
|
||||||
w << NC::fmtBold << '\n' << m->Name << ": " << NC::fmtBoldEnd;
|
w << NC::Format::Bold << '\n' << m->Name << ": " << NC::Format::NoBold;
|
||||||
ShowTag(w, s.getTags(m->Get, Config.tags_separator));
|
ShowTag(w, s.getTags(m->Get, Config.tags_separator));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -252,7 +252,7 @@ void Status::Changes::playerState()
|
|||||||
|
|
||||||
if (Config.new_design)
|
if (Config.new_design)
|
||||||
{
|
{
|
||||||
*wHeader << NC::XY(0, 1) << NC::fmtBold << player_state << NC::fmtBoldEnd;
|
*wHeader << NC::XY(0, 1) << NC::Format::Bold << player_state << NC::Format::NoBold;
|
||||||
wHeader->refresh();
|
wHeader->refresh();
|
||||||
}
|
}
|
||||||
else if (Statusbar::isUnlocked() && Config.statusbar_visibility)
|
else if (Statusbar::isUnlocked() && Config.statusbar_visibility)
|
||||||
@@ -261,7 +261,7 @@ void Status::Changes::playerState()
|
|||||||
if (player_state.empty())
|
if (player_state.empty())
|
||||||
*wFooter << wclrtoeol;
|
*wFooter << wclrtoeol;
|
||||||
else
|
else
|
||||||
*wFooter << NC::fmtBold << player_state << NC::fmtBoldEnd;
|
*wFooter << NC::Format::Bold << player_state << NC::Format::NoBold;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -346,11 +346,11 @@ void Status::Changes::elapsedTime()
|
|||||||
*wHeader << NC::XY(first_start, 0);
|
*wHeader << NC::XY(first_start, 0);
|
||||||
writeCyclicBuffer(first, *wHeader, first_line_scroll_begin, COLS-tracklength.length()-VolumeState.length()-1, L" ** ");
|
writeCyclicBuffer(first, *wHeader, first_line_scroll_begin, COLS-tracklength.length()-VolumeState.length()-1, L" ** ");
|
||||||
|
|
||||||
*wHeader << NC::XY(0, 1) << wclrtoeol << NC::fmtBold << player_state << NC::fmtBoldEnd;
|
*wHeader << NC::XY(0, 1) << wclrtoeol << NC::Format::Bold << player_state << NC::Format::NoBold;
|
||||||
*wHeader << NC::XY(second_start, 1);
|
*wHeader << NC::XY(second_start, 1);
|
||||||
writeCyclicBuffer(second, *wHeader, second_line_scroll_begin, COLS-player_state.length()-8-2, L" ** ");
|
writeCyclicBuffer(second, *wHeader, second_line_scroll_begin, COLS-player_state.length()-8-2, L" ** ");
|
||||||
|
|
||||||
*wHeader << NC::XY(wHeader->getWidth()-VolumeState.length(), 0) << Config.volume_color << VolumeState << NC::clEnd;
|
*wHeader << NC::XY(wHeader->getWidth()-VolumeState.length(), 0) << Config.volume_color << VolumeState << NC::Color::End;
|
||||||
|
|
||||||
flags();
|
flags();
|
||||||
}
|
}
|
||||||
@@ -383,9 +383,9 @@ void Status::Changes::elapsedTime()
|
|||||||
}
|
}
|
||||||
NC::WBuffer np_song;
|
NC::WBuffer np_song;
|
||||||
stringToBuffer(ToWString(Charset::utf8ToLocale(np.toString(Config.song_status_format, Config.tags_separator, "$"))), np_song);
|
stringToBuffer(ToWString(Charset::utf8ToLocale(np.toString(Config.song_status_format, Config.tags_separator, "$"))), np_song);
|
||||||
*wFooter << NC::XY(0, 1) << wclrtoeol << NC::fmtBold << player_state << NC::fmtBoldEnd;
|
*wFooter << NC::XY(0, 1) << wclrtoeol << NC::Format::Bold << player_state << NC::Format::NoBold;
|
||||||
writeCyclicBuffer(np_song, *wFooter, playing_song_scroll_begin, wFooter->getWidth()-player_state.length()-tracklength.length(), L" ** ");
|
writeCyclicBuffer(np_song, *wFooter, playing_song_scroll_begin, wFooter->getWidth()-player_state.length()-tracklength.length(), L" ** ");
|
||||||
*wFooter << NC::fmtBold << NC::XY(wFooter->getWidth()-tracklength.length(), 1) << tracklength << NC::fmtBoldEnd;
|
*wFooter << NC::Format::Bold << NC::XY(wFooter->getWidth()-tracklength.length(), 1) << tracklength << NC::Format::NoBold;
|
||||||
}
|
}
|
||||||
if (Progressbar::isUnlocked())
|
if (Progressbar::isUnlocked())
|
||||||
Progressbar::draw(Mpd.GetElapsedTime(), Mpd.GetTotalTime());
|
Progressbar::draw(Mpd.GetElapsedTime(), Mpd.GetTotalTime());
|
||||||
@@ -444,12 +444,12 @@ void Status::Changes::flags()
|
|||||||
switch_state += mpd_crossfade ? mpd_crossfade : '-';
|
switch_state += mpd_crossfade ? mpd_crossfade : '-';
|
||||||
switch_state += mpd_db_updating ? mpd_db_updating : '-';
|
switch_state += mpd_db_updating ? mpd_db_updating : '-';
|
||||||
switch_state += ']';
|
switch_state += ']';
|
||||||
*wHeader << NC::XY(COLS-switch_state.length(), 1) << NC::fmtBold << Config.state_flags_color << switch_state << NC::clEnd << NC::fmtBoldEnd;
|
*wHeader << NC::XY(COLS-switch_state.length(), 1) << NC::Format::Bold << Config.state_flags_color << switch_state << NC::Color::End << NC::Format::NoBold;
|
||||||
if (Config.new_design && !Config.header_visibility) // in this case also draw separator
|
if (Config.new_design && !Config.header_visibility) // in this case also draw separator
|
||||||
{
|
{
|
||||||
*wHeader << NC::fmtBold << NC::clBlack;
|
*wHeader << NC::Format::Bold << NC::Color::Black;
|
||||||
mvwhline(wHeader->raw(), 2, 0, 0, COLS);
|
mvwhline(wHeader->raw(), 2, 0, 0, COLS);
|
||||||
*wHeader << NC::clEnd << NC::fmtBoldEnd;
|
*wHeader << NC::Color::End << NC::Format::NoBold;
|
||||||
}
|
}
|
||||||
wHeader->refresh();
|
wHeader->refresh();
|
||||||
}
|
}
|
||||||
@@ -470,19 +470,19 @@ void Status::Changes::flags()
|
|||||||
|
|
||||||
// this is done by raw ncurses because creating another
|
// this is done by raw ncurses because creating another
|
||||||
// window only for handling this is quite silly
|
// window only for handling this is quite silly
|
||||||
attrset(A_BOLD|COLOR_PAIR(Config.state_line_color));
|
attrset(A_BOLD|COLOR_PAIR(int(Config.state_line_color)));
|
||||||
mvhline(1, 0, 0, COLS);
|
mvhline(1, 0, 0, COLS);
|
||||||
if (!switch_state.empty())
|
if (!switch_state.empty())
|
||||||
{
|
{
|
||||||
mvprintw(1, COLS-switch_state.length()-3, "[");
|
mvprintw(1, COLS-switch_state.length()-3, "[");
|
||||||
attroff(COLOR_PAIR(Config.state_line_color));
|
attroff(COLOR_PAIR(int(Config.state_line_color)));
|
||||||
attron(COLOR_PAIR(Config.state_flags_color));
|
attron(COLOR_PAIR(int(Config.state_flags_color)));
|
||||||
mvprintw(1, COLS-switch_state.length()-2, "%s", switch_state.c_str());
|
mvprintw(1, COLS-switch_state.length()-2, "%s", switch_state.c_str());
|
||||||
attroff(COLOR_PAIR(Config.state_flags_color));
|
attroff(COLOR_PAIR(int(Config.state_flags_color)));
|
||||||
attron(COLOR_PAIR(Config.state_line_color));
|
attron(COLOR_PAIR(int(Config.state_line_color)));
|
||||||
mvprintw(1, COLS-2, "]");
|
mvprintw(1, COLS-2, "]");
|
||||||
}
|
}
|
||||||
attroff(A_BOLD|COLOR_PAIR(Config.state_line_color));
|
attroff(A_BOLD|COLOR_PAIR(int(Config.state_line_color)));
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -503,7 +503,7 @@ void Status::Changes::mixer()
|
|||||||
}
|
}
|
||||||
*wHeader << Config.volume_color;
|
*wHeader << Config.volume_color;
|
||||||
*wHeader << NC::XY(wHeader->getWidth()-VolumeState.length(), 0) << VolumeState;
|
*wHeader << NC::XY(wHeader->getWidth()-VolumeState.length(), 0) << VolumeState;
|
||||||
*wHeader << NC::clEnd;
|
*wHeader << NC::Color::End;
|
||||||
wHeader->refresh();
|
wHeader->refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ void showMessage(int time, const char *format, va_list list)
|
|||||||
else
|
else
|
||||||
progressbarBlockUpdate = true;
|
progressbarBlockUpdate = true;
|
||||||
wFooter->goToXY(0, Config.statusbar_visibility);
|
wFooter->goToXY(0, Config.statusbar_visibility);
|
||||||
*wFooter << NC::fmtBoldEnd;
|
*wFooter << NC::Format::NoBold;
|
||||||
wmove(wFooter->raw(), Config.statusbar_visibility, 0);
|
wmove(wFooter->raw(), Config.statusbar_visibility, 0);
|
||||||
vw_printw(wFooter->raw(), format, list);
|
vw_printw(wFooter->raw(), format, list);
|
||||||
wclrtoeol(wFooter->raw());
|
wclrtoeol(wFooter->raw());
|
||||||
@@ -76,7 +76,7 @@ void Progressbar::draw(unsigned int elapsed, unsigned int time)
|
|||||||
unsigned pb_width = wFooter->getWidth();
|
unsigned pb_width = wFooter->getWidth();
|
||||||
unsigned howlong = time ? pb_width*elapsed/time : 0;
|
unsigned howlong = time ? pb_width*elapsed/time : 0;
|
||||||
if (Config.progressbar_boldness)
|
if (Config.progressbar_boldness)
|
||||||
*wFooter << NC::fmtBold;
|
*wFooter << NC::Format::Bold;
|
||||||
*wFooter << Config.progressbar_color;
|
*wFooter << Config.progressbar_color;
|
||||||
if (Config.progressbar[2] != '\0')
|
if (Config.progressbar[2] != '\0')
|
||||||
{
|
{
|
||||||
@@ -95,11 +95,11 @@ void Progressbar::draw(unsigned int elapsed, unsigned int time)
|
|||||||
*wFooter << Config.progressbar[0];
|
*wFooter << Config.progressbar[0];
|
||||||
if (howlong < wFooter->getWidth())
|
if (howlong < wFooter->getWidth())
|
||||||
*wFooter << Config.progressbar[1];
|
*wFooter << Config.progressbar[1];
|
||||||
*wFooter << NC::clEnd;
|
*wFooter << NC::Color::End;
|
||||||
}
|
}
|
||||||
*wFooter << NC::clEnd;
|
*wFooter << NC::Color::End;
|
||||||
if (Config.progressbar_boldness)
|
if (Config.progressbar_boldness)
|
||||||
*wFooter << NC::fmtBoldEnd;
|
*wFooter << NC::Format::NoBold;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Statusbar::lock()
|
void Statusbar::lock()
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ TagEditor::TagEditor() : FParser(0), FParserHelper(0), FParserLegend(0), FParser
|
|||||||
PatternsFile = Config.ncmpcpp_directory + "patterns.list";
|
PatternsFile = Config.ncmpcpp_directory + "patterns.list";
|
||||||
SetDimensions(0, COLS);
|
SetDimensions(0, COLS);
|
||||||
|
|
||||||
Dirs = new NC::Menu< std::pair<std::string, std::string> >(0, MainStartY, LeftColumnWidth, MainHeight, Config.titles_visibility ? "Directories" : "", Config.main_color, NC::brNone);
|
Dirs = new NC::Menu< std::pair<std::string, std::string> >(0, MainStartY, LeftColumnWidth, MainHeight, Config.titles_visibility ? "Directories" : "", Config.main_color, NC::Border::None);
|
||||||
Dirs->setHighlightColor(Config.active_column_color);
|
Dirs->setHighlightColor(Config.active_column_color);
|
||||||
Dirs->cyclicScrolling(Config.use_cyclic_scrolling);
|
Dirs->cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
Dirs->centeredCursor(Config.centered_cursor);
|
Dirs->centeredCursor(Config.centered_cursor);
|
||||||
@@ -98,7 +98,7 @@ TagEditor::TagEditor() : FParser(0), FParserHelper(0), FParserLegend(0), FParser
|
|||||||
menu << Charset::utf8ToLocale(menu.drawn()->value().first);
|
menu << Charset::utf8ToLocale(menu.drawn()->value().first);
|
||||||
});
|
});
|
||||||
|
|
||||||
TagTypes = new NC::Menu<std::string>(MiddleColumnStartX, MainStartY, MiddleColumnWidth, MainHeight, Config.titles_visibility ? "Tag types" : "", Config.main_color, NC::brNone);
|
TagTypes = new NC::Menu<std::string>(MiddleColumnStartX, MainStartY, MiddleColumnWidth, MainHeight, Config.titles_visibility ? "Tag types" : "", Config.main_color, NC::Border::None);
|
||||||
TagTypes->setHighlightColor(Config.main_highlight_color);
|
TagTypes->setHighlightColor(Config.main_highlight_color);
|
||||||
TagTypes->cyclicScrolling(Config.use_cyclic_scrolling);
|
TagTypes->cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
TagTypes->centeredCursor(Config.centered_cursor);
|
TagTypes->centeredCursor(Config.centered_cursor);
|
||||||
@@ -120,7 +120,7 @@ TagEditor::TagEditor() : FParser(0), FParserHelper(0), FParserLegend(0), FParser
|
|||||||
TagTypes->addItem("Reset");
|
TagTypes->addItem("Reset");
|
||||||
TagTypes->addItem("Save");
|
TagTypes->addItem("Save");
|
||||||
|
|
||||||
Tags = new NC::Menu<MPD::MutableSong>(RightColumnStartX, MainStartY, RightColumnWidth, MainHeight, Config.titles_visibility ? "Tags" : "", Config.main_color, NC::brNone);
|
Tags = new NC::Menu<MPD::MutableSong>(RightColumnStartX, MainStartY, RightColumnWidth, MainHeight, Config.titles_visibility ? "Tags" : "", Config.main_color, NC::Border::None);
|
||||||
Tags->setHighlightColor(Config.main_highlight_color);
|
Tags->setHighlightColor(Config.main_highlight_color);
|
||||||
Tags->cyclicScrolling(Config.use_cyclic_scrolling);
|
Tags->cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
Tags->centeredCursor(Config.centered_cursor);
|
Tags->centeredCursor(Config.centered_cursor);
|
||||||
@@ -315,9 +315,9 @@ void TagEditor::enterPressed()
|
|||||||
*FParserLegend << "%p - performer\n";
|
*FParserLegend << "%p - performer\n";
|
||||||
*FParserLegend << "%d - disc\n";
|
*FParserLegend << "%d - disc\n";
|
||||||
*FParserLegend << "%C - comment\n\n";
|
*FParserLegend << "%C - comment\n\n";
|
||||||
*FParserLegend << NC::fmtBold << "Files:\n" << NC::fmtBoldEnd;
|
*FParserLegend << NC::Format::Bold << "Files:\n" << NC::Format::NoBold;
|
||||||
for (auto it = EditedSongs.begin(); it != EditedSongs.end(); ++it)
|
for (auto it = EditedSongs.begin(); it != EditedSongs.end(); ++it)
|
||||||
*FParserLegend << Config.color2 << " * " << NC::clEnd << (*it)->getName() << '\n';
|
*FParserLegend << Config.color2 << " * " << NC::Color::End << (*it)->getName() << '\n';
|
||||||
FParserLegend->flush();
|
FParserLegend->flush();
|
||||||
|
|
||||||
if (!Patterns.empty())
|
if (!Patterns.empty())
|
||||||
@@ -378,7 +378,7 @@ void TagEditor::enterPressed()
|
|||||||
{
|
{
|
||||||
if (FParserUsePreview)
|
if (FParserUsePreview)
|
||||||
{
|
{
|
||||||
*FParserPreview << NC::fmtBold << s.getName() << ":\n" << NC::fmtBoldEnd;
|
*FParserPreview << NC::Format::Bold << s.getName() << ":\n" << NC::Format::NoBold;
|
||||||
*FParserPreview << ParseFilename(s, Config.pattern, FParserUsePreview) << '\n';
|
*FParserPreview << ParseFilename(s, Config.pattern, FParserUsePreview) << '\n';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -398,9 +398,9 @@ void TagEditor::enterPressed()
|
|||||||
}
|
}
|
||||||
if (!FParserUsePreview)
|
if (!FParserUsePreview)
|
||||||
s.setNewURI(new_file + extension);
|
s.setNewURI(new_file + extension);
|
||||||
*FParserPreview << file << Config.color2 << " -> " << NC::clEnd;
|
*FParserPreview << file << Config.color2 << " -> " << NC::Color::End;
|
||||||
if (new_file.empty())
|
if (new_file.empty())
|
||||||
*FParserPreview << Config.empty_tags_color << Config.empty_tag << NC::clEnd;
|
*FParserPreview << Config.empty_tags_color << Config.empty_tag << NC::Color::End;
|
||||||
else
|
else
|
||||||
*FParserPreview << new_file << extension;
|
*FParserPreview << new_file << extension;
|
||||||
*FParserPreview << "\n\n";
|
*FParserPreview << "\n\n";
|
||||||
@@ -493,7 +493,7 @@ void TagEditor::enterPressed()
|
|||||||
if (id > 0 && w == TagTypes)
|
if (id > 0 && w == TagTypes)
|
||||||
{
|
{
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << NC::fmtBold << TagTypes->current().value() << NC::fmtBoldEnd << ": ";
|
Statusbar::put() << NC::Format::Bold << TagTypes->current().value() << NC::Format::NoBold << ": ";
|
||||||
std::string new_tag = wFooter->getString(Tags->current().value().getTags(get, Config.tags_separator));
|
std::string new_tag = wFooter->getString(Tags->current().value().getTags(get, Config.tags_separator));
|
||||||
Statusbar::unlock();
|
Statusbar::unlock();
|
||||||
for (auto it = EditedSongs.begin(); it != EditedSongs.end(); ++it)
|
for (auto it = EditedSongs.begin(); it != EditedSongs.end(); ++it)
|
||||||
@@ -502,7 +502,7 @@ void TagEditor::enterPressed()
|
|||||||
else if (w == Tags)
|
else if (w == Tags)
|
||||||
{
|
{
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << NC::fmtBold << TagTypes->current().value() << NC::fmtBoldEnd << ": ";
|
Statusbar::put() << NC::Format::Bold << TagTypes->current().value() << NC::Format::NoBold << ": ";
|
||||||
std::string new_tag = wFooter->getString(Tags->current().value().getTags(get, Config.tags_separator));
|
std::string new_tag = wFooter->getString(Tags->current().value().getTags(get, Config.tags_separator));
|
||||||
Statusbar::unlock();
|
Statusbar::unlock();
|
||||||
if (new_tag != Tags->current().value().getTags(get, Config.tags_separator))
|
if (new_tag != Tags->current().value().getTags(get, Config.tags_separator))
|
||||||
@@ -527,7 +527,7 @@ void TagEditor::enterPressed()
|
|||||||
std::string extension = old_name.substr(last_dot);
|
std::string extension = old_name.substr(last_dot);
|
||||||
old_name = old_name.substr(0, last_dot);
|
old_name = old_name.substr(0, last_dot);
|
||||||
Statusbar::lock();
|
Statusbar::lock();
|
||||||
Statusbar::put() << NC::fmtBold << "New filename: " << NC::fmtBoldEnd;
|
Statusbar::put() << NC::Format::Bold << "New filename: " << NC::Format::NoBold;
|
||||||
std::string new_name = wFooter->getString(old_name);
|
std::string new_name = wFooter->getString(old_name);
|
||||||
Statusbar::unlock();
|
Statusbar::unlock();
|
||||||
if (!new_name.empty() && new_name != old_name)
|
if (!new_name.empty() && new_name != old_name)
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ using Global::MainStartY;
|
|||||||
TinyTagEditor *myTinyTagEditor;
|
TinyTagEditor *myTinyTagEditor;
|
||||||
|
|
||||||
TinyTagEditor::TinyTagEditor()
|
TinyTagEditor::TinyTagEditor()
|
||||||
: Screen(NC::Menu<NC::Buffer>(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::brNone))
|
: Screen(NC::Menu<NC::Buffer>(0, MainStartY, COLS, MainHeight, "", Config.main_color, NC::Border::None))
|
||||||
{
|
{
|
||||||
w.setHighlightColor(Config.main_highlight_color);
|
w.setHighlightColor(Config.main_highlight_color);
|
||||||
w.cyclicScrolling(Config.use_cyclic_scrolling);
|
w.cyclicScrolling(Config.use_cyclic_scrolling);
|
||||||
@@ -102,16 +102,16 @@ void TinyTagEditor::enterPressed()
|
|||||||
if (option < 19) // separator after comment
|
if (option < 19) // separator after comment
|
||||||
{
|
{
|
||||||
size_t pos = option-8;
|
size_t pos = option-8;
|
||||||
Statusbar::put() << NC::fmtBold << SongInfo::Tags[pos].Name << ": " << NC::fmtBoldEnd;
|
Statusbar::put() << NC::Format::Bold << SongInfo::Tags[pos].Name << ": " << NC::Format::NoBold;
|
||||||
itsEdited.setTags(SongInfo::Tags[pos].Set, Global::wFooter->getString(
|
itsEdited.setTags(SongInfo::Tags[pos].Set, Global::wFooter->getString(
|
||||||
itsEdited.getTags(SongInfo::Tags[pos].Get, Config.tags_separator)), Config.tags_separator);
|
itsEdited.getTags(SongInfo::Tags[pos].Get, Config.tags_separator)), Config.tags_separator);
|
||||||
w.at(option).value().clear();
|
w.at(option).value().clear();
|
||||||
w.at(option).value() << NC::fmtBold << SongInfo::Tags[pos].Name << ':' << NC::fmtBoldEnd << ' ';
|
w.at(option).value() << NC::Format::Bold << SongInfo::Tags[pos].Name << ':' << NC::Format::NoBold << ' ';
|
||||||
ShowTag(w.at(option).value(), itsEdited.getTags(SongInfo::Tags[pos].Get, Config.tags_separator));
|
ShowTag(w.at(option).value(), itsEdited.getTags(SongInfo::Tags[pos].Get, Config.tags_separator));
|
||||||
}
|
}
|
||||||
else if (option == 20)
|
else if (option == 20)
|
||||||
{
|
{
|
||||||
Statusbar::put() << NC::fmtBold << "Filename: " << NC::fmtBoldEnd;
|
Statusbar::put() << NC::Format::Bold << "Filename: " << NC::Format::NoBold;
|
||||||
std::string filename = itsEdited.getNewURI().empty() ? itsEdited.getName() : itsEdited.getNewURI();
|
std::string filename = itsEdited.getNewURI().empty() ? itsEdited.getName() : itsEdited.getNewURI();
|
||||||
size_t dot = filename.rfind(".");
|
size_t dot = filename.rfind(".");
|
||||||
std::string extension = filename.substr(dot);
|
std::string extension = filename.substr(dot);
|
||||||
@@ -119,7 +119,7 @@ void TinyTagEditor::enterPressed()
|
|||||||
std::string new_name = Global::wFooter->getString(filename);
|
std::string new_name = Global::wFooter->getString(filename);
|
||||||
itsEdited.setNewURI(new_name + extension);
|
itsEdited.setNewURI(new_name + extension);
|
||||||
w.at(option).value().clear();
|
w.at(option).value().clear();
|
||||||
w.at(option).value() << NC::fmtBold << "Filename:" << NC::fmtBoldEnd << ' ' << (itsEdited.getNewURI().empty() ? itsEdited.getName() : itsEdited.getNewURI());
|
w.at(option).value() << NC::Format::Bold << "Filename:" << NC::Format::NoBold << ' ' << (itsEdited.getNewURI().empty() ? itsEdited.getName() : itsEdited.getNewURI());
|
||||||
}
|
}
|
||||||
Statusbar::unlock();
|
Statusbar::unlock();
|
||||||
|
|
||||||
@@ -204,23 +204,23 @@ bool TinyTagEditor::getTags()
|
|||||||
|
|
||||||
w.highlight(8);
|
w.highlight(8);
|
||||||
|
|
||||||
w.at(0).value() << NC::fmtBold << Config.color1 << "Song name: " << NC::fmtBoldEnd << Config.color2 << itsEdited.getName() << NC::clEnd;
|
w.at(0).value() << NC::Format::Bold << Config.color1 << "Song name: " << NC::Format::NoBold << Config.color2 << itsEdited.getName() << NC::Color::End;
|
||||||
w.at(1).value() << NC::fmtBold << Config.color1 << "Location in DB: " << NC::fmtBoldEnd << Config.color2;
|
w.at(1).value() << NC::Format::Bold << Config.color1 << "Location in DB: " << NC::Format::NoBold << Config.color2;
|
||||||
ShowTag(w.at(1).value(), itsEdited.getDirectory());
|
ShowTag(w.at(1).value(), itsEdited.getDirectory());
|
||||||
w.at(1).value() << NC::clEnd;
|
w.at(1).value() << NC::Color::End;
|
||||||
w.at(3).value() << NC::fmtBold << Config.color1 << "Length: " << NC::fmtBoldEnd << Config.color2 << itsEdited.getLength() << NC::clEnd;
|
w.at(3).value() << NC::Format::Bold << Config.color1 << "Length: " << NC::Format::NoBold << Config.color2 << itsEdited.getLength() << NC::Color::End;
|
||||||
w.at(4).value() << NC::fmtBold << Config.color1 << "Bitrate: " << NC::fmtBoldEnd << Config.color2 << f.audioProperties()->bitrate() << " kbps" << NC::clEnd;
|
w.at(4).value() << NC::Format::Bold << Config.color1 << "Bitrate: " << NC::Format::NoBold << Config.color2 << f.audioProperties()->bitrate() << " kbps" << NC::Color::End;
|
||||||
w.at(5).value() << NC::fmtBold << Config.color1 << "Sample rate: " << NC::fmtBoldEnd << Config.color2 << f.audioProperties()->sampleRate() << " Hz" << NC::clEnd;
|
w.at(5).value() << NC::Format::Bold << Config.color1 << "Sample rate: " << NC::Format::NoBold << Config.color2 << f.audioProperties()->sampleRate() << " Hz" << NC::Color::End;
|
||||||
w.at(6).value() << NC::fmtBold << Config.color1 << "Channels: " << NC::fmtBoldEnd << Config.color2 << (f.audioProperties()->channels() == 1 ? "Mono" : "Stereo") << NC::clDefault;
|
w.at(6).value() << NC::Format::Bold << Config.color1 << "Channels: " << NC::Format::NoBold << Config.color2 << (f.audioProperties()->channels() == 1 ? "Mono" : "Stereo") << NC::Color::Default;
|
||||||
|
|
||||||
unsigned pos = 8;
|
unsigned pos = 8;
|
||||||
for (const SongInfo::Metadata *m = SongInfo::Tags; m->Name; ++m, ++pos)
|
for (const SongInfo::Metadata *m = SongInfo::Tags; m->Name; ++m, ++pos)
|
||||||
{
|
{
|
||||||
w.at(pos).value() << NC::fmtBold << m->Name << ":" << NC::fmtBoldEnd << ' ';
|
w.at(pos).value() << NC::Format::Bold << m->Name << ":" << NC::Format::NoBold << ' ';
|
||||||
ShowTag(w.at(pos).value(), itsEdited.getTags(m->Get, Config.tags_separator));
|
ShowTag(w.at(pos).value(), itsEdited.getTags(m->Get, Config.tags_separator));
|
||||||
}
|
}
|
||||||
|
|
||||||
w.at(20).value() << NC::fmtBold << "Filename:" << NC::fmtBoldEnd << ' ' << itsEdited.getName();
|
w.at(20).value() << NC::Format::Bold << "Filename:" << NC::Format::NoBold << ' ' << itsEdited.getName();
|
||||||
|
|
||||||
w.at(22).value() << "Save";
|
w.at(22).value() << "Save";
|
||||||
w.at(23).value() << "Cancel";
|
w.at(23).value() << "Cancel";
|
||||||
|
|||||||
@@ -47,19 +47,19 @@ void drawHeader()
|
|||||||
{
|
{
|
||||||
std::wstring title = myScreen->title();
|
std::wstring title = myScreen->title();
|
||||||
*wHeader << NC::XY(0, 3) << wclrtoeol;
|
*wHeader << NC::XY(0, 3) << wclrtoeol;
|
||||||
*wHeader << NC::fmtBold << Config.alternative_ui_separator_color;
|
*wHeader << NC::Format::Bold << Config.alternative_ui_separator_color;
|
||||||
mvwhline(wHeader->raw(), 2, 0, 0, COLS);
|
mvwhline(wHeader->raw(), 2, 0, 0, COLS);
|
||||||
mvwhline(wHeader->raw(), 4, 0, 0, COLS);
|
mvwhline(wHeader->raw(), 4, 0, 0, COLS);
|
||||||
*wHeader << NC::XY((COLS-wideLength(title))/2, 3);
|
*wHeader << NC::XY((COLS-wideLength(title))/2, 3);
|
||||||
*wHeader << Config.header_color << title << NC::clEnd;
|
*wHeader << Config.header_color << title << NC::Color::End;
|
||||||
*wHeader << NC::clEnd << NC::fmtBoldEnd;
|
*wHeader << NC::Color::End << NC::Format::NoBold;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*wHeader << NC::XY(0, 0) << wclrtoeol << NC::fmtBold << myScreen->title() << NC::fmtBoldEnd;
|
*wHeader << NC::XY(0, 0) << wclrtoeol << NC::Format::Bold << myScreen->title() << NC::Format::NoBold;
|
||||||
*wHeader << Config.volume_color;
|
*wHeader << Config.volume_color;
|
||||||
*wHeader << NC::XY(wHeader->getWidth()-VolumeState.length(), 0) << VolumeState;
|
*wHeader << NC::XY(wHeader->getWidth()-VolumeState.length(), 0) << VolumeState;
|
||||||
*wHeader << NC::clEnd;
|
*wHeader << NC::Color::End;
|
||||||
}
|
}
|
||||||
wHeader->refresh();
|
wHeader->refresh();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,50 @@
|
|||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include "utility/type_conversions.h"
|
#include "utility/type_conversions.h"
|
||||||
|
|
||||||
|
NC::Color stringToColor(const std::string &color)
|
||||||
|
{
|
||||||
|
NC::Color result = NC::Color::Default;
|
||||||
|
if (color == "black")
|
||||||
|
result = NC::Color::Black;
|
||||||
|
else if (color == "red")
|
||||||
|
result = NC::Color::Red;
|
||||||
|
else if (color == "green")
|
||||||
|
result = NC::Color::Green;
|
||||||
|
else if (color == "yellow")
|
||||||
|
result = NC::Color::Yellow;
|
||||||
|
else if (color == "blue")
|
||||||
|
result = NC::Color::Blue;
|
||||||
|
else if (color == "magenta")
|
||||||
|
result = NC::Color::Magenta;
|
||||||
|
else if (color == "cyan")
|
||||||
|
result = NC::Color::Cyan;
|
||||||
|
else if (color == "white")
|
||||||
|
result = NC::Color::White;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
NC::Border stringToBorder(const std::string &border)
|
||||||
|
{
|
||||||
|
NC::Border result = NC::Border::None;
|
||||||
|
if (border == "black")
|
||||||
|
result = NC::Border::Black;
|
||||||
|
else if (border == "red")
|
||||||
|
result = NC::Border::Red;
|
||||||
|
else if (border == "green")
|
||||||
|
result = NC::Border::Green;
|
||||||
|
else if (border == "yellow")
|
||||||
|
result = NC::Border::Yellow;
|
||||||
|
else if (border == "blue")
|
||||||
|
result = NC::Border::Blue;
|
||||||
|
else if (border == "magenta")
|
||||||
|
result = NC::Border::Magenta;
|
||||||
|
else if (border == "cyan")
|
||||||
|
result = NC::Border::Cyan;
|
||||||
|
else if (border == "white")
|
||||||
|
result = NC::Border::White;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
std::string tagTypeToString(mpd_tag_type tag)
|
std::string tagTypeToString(mpd_tag_type tag)
|
||||||
{
|
{
|
||||||
switch (tag)
|
switch (tag)
|
||||||
|
|||||||
@@ -23,6 +23,10 @@
|
|||||||
|
|
||||||
#include "mpdpp.h"
|
#include "mpdpp.h"
|
||||||
#include "mutable_song.h"
|
#include "mutable_song.h"
|
||||||
|
#include "window.h"
|
||||||
|
|
||||||
|
NC::Color stringToColor(const std::string &color);
|
||||||
|
NC::Border stringToBorder(const std::string &border);
|
||||||
|
|
||||||
std::string tagTypeToString(mpd_tag_type tag);
|
std::string tagTypeToString(mpd_tag_type tag);
|
||||||
MPD::MutableSong::SetFunction tagTypeToSetFunction(mpd_tag_type tag);
|
MPD::MutableSong::SetFunction tagTypeToSetFunction(mpd_tag_type tag);
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ Visualizer *myVisualizer;
|
|||||||
const int Visualizer::WindowTimeout = 1000/25; /* 25 fps */
|
const int Visualizer::WindowTimeout = 1000/25; /* 25 fps */
|
||||||
|
|
||||||
Visualizer::Visualizer()
|
Visualizer::Visualizer()
|
||||||
: Screen(NC::Window(0, MainStartY, COLS, MainHeight, "", Config.visualizer_color, NC::brNone))
|
: Screen(NC::Window(0, MainStartY, COLS, MainHeight, "", Config.visualizer_color, NC::Border::None))
|
||||||
{
|
{
|
||||||
ResetFD();
|
ResetFD();
|
||||||
m_samples = Config.visualizer_in_stereo ? 4096 : 2048;
|
m_samples = Config.visualizer_in_stereo ? 4096 : 2048;
|
||||||
|
|||||||
@@ -87,9 +87,9 @@ Window::Window(size_t startx,
|
|||||||
m_height(height),
|
m_height(height),
|
||||||
m_window_timeout(-1),
|
m_window_timeout(-1),
|
||||||
m_color(color),
|
m_color(color),
|
||||||
m_bg_color(clDefault),
|
m_bg_color(Color::Default),
|
||||||
m_base_color(color),
|
m_base_color(color),
|
||||||
m_base_bg_color(clDefault),
|
m_base_bg_color(Color::Default),
|
||||||
m_border(border),
|
m_border(border),
|
||||||
m_get_string_helper(0),
|
m_get_string_helper(0),
|
||||||
m_title(title),
|
m_title(title),
|
||||||
@@ -105,10 +105,10 @@ Window::Window(size_t startx,
|
|||||||
|| m_height+m_start_y > size_t(LINES))
|
|| m_height+m_start_y > size_t(LINES))
|
||||||
FatalError("Constructed window is bigger than terminal size");
|
FatalError("Constructed window is bigger than terminal size");
|
||||||
|
|
||||||
if (m_border != brNone)
|
if (m_border != Border::None)
|
||||||
{
|
{
|
||||||
m_border_window = newpad(m_height, m_width);
|
m_border_window = newpad(m_height, m_width);
|
||||||
wattron(m_border_window, COLOR_PAIR(m_border));
|
wattron(m_border_window, COLOR_PAIR(int(m_border)));
|
||||||
box(m_border_window, 0, 0);
|
box(m_border_window, 0, 0);
|
||||||
m_start_x++;
|
m_start_x++;
|
||||||
m_start_y++;
|
m_start_y++;
|
||||||
@@ -218,13 +218,13 @@ Window::~Window()
|
|||||||
|
|
||||||
void Window::setColor(Color fg, Color bg)
|
void Window::setColor(Color fg, Color bg)
|
||||||
{
|
{
|
||||||
if (fg == clDefault)
|
if (fg == Color::Default)
|
||||||
fg = m_base_color;
|
fg = m_base_color;
|
||||||
|
|
||||||
if (fg != clDefault)
|
if (fg != Color::Default)
|
||||||
wattron(m_window, COLOR_PAIR(bg*8+fg));
|
wattron(m_window, COLOR_PAIR(int(bg)*8+int(fg)));
|
||||||
else
|
else
|
||||||
wattroff(m_window, COLOR_PAIR(m_color));
|
wattroff(m_window, COLOR_PAIR(int(m_color)));
|
||||||
m_color = fg;
|
m_color = fg;
|
||||||
m_bg_color = bg;
|
m_bg_color = bg;
|
||||||
}
|
}
|
||||||
@@ -237,7 +237,7 @@ void Window::setBaseColor(Color fg, Color bg)
|
|||||||
|
|
||||||
void Window::setBorder(Border border)
|
void Window::setBorder(Border border)
|
||||||
{
|
{
|
||||||
if (border == brNone && m_border != brNone)
|
if (border == Border::None && m_border != Border::None)
|
||||||
{
|
{
|
||||||
delwin(m_border_window);
|
delwin(m_border_window);
|
||||||
m_start_x--;
|
m_start_x--;
|
||||||
@@ -246,10 +246,10 @@ void Window::setBorder(Border border)
|
|||||||
m_width += 2;
|
m_width += 2;
|
||||||
recreate(m_width, m_height);
|
recreate(m_width, m_height);
|
||||||
}
|
}
|
||||||
else if (border != brNone && m_border == brNone)
|
else if (border != Border::None && m_border == Border::None)
|
||||||
{
|
{
|
||||||
m_border_window = newpad(m_height, m_width);
|
m_border_window = newpad(m_height, m_width);
|
||||||
wattron(m_border_window, COLOR_PAIR(border));
|
wattron(m_border_window, COLOR_PAIR(int(border)));
|
||||||
box(m_border_window,0,0);
|
box(m_border_window,0,0);
|
||||||
m_start_x++;
|
m_start_x++;
|
||||||
m_start_y++;
|
m_start_y++;
|
||||||
@@ -259,7 +259,7 @@ void Window::setBorder(Border border)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wattron(m_border_window,COLOR_PAIR(border));
|
wattron(m_border_window,COLOR_PAIR(int(border)));
|
||||||
box(m_border_window, 0, 0);
|
box(m_border_window, 0, 0);
|
||||||
}
|
}
|
||||||
m_border = border;
|
m_border = border;
|
||||||
@@ -311,7 +311,7 @@ void Window::moveTo(size_t new_x, size_t new_y)
|
|||||||
{
|
{
|
||||||
m_start_x = new_x;
|
m_start_x = new_x;
|
||||||
m_start_y = new_y;
|
m_start_y = new_y;
|
||||||
if (m_border != brNone)
|
if (m_border != Border::None)
|
||||||
{
|
{
|
||||||
m_start_x++;
|
m_start_x++;
|
||||||
m_start_y++;
|
m_start_y++;
|
||||||
@@ -322,11 +322,11 @@ void Window::moveTo(size_t new_x, size_t new_y)
|
|||||||
|
|
||||||
void Window::adjustDimensions(size_t width, size_t height)
|
void Window::adjustDimensions(size_t width, size_t height)
|
||||||
{
|
{
|
||||||
if (m_border != brNone)
|
if (m_border != Border::None)
|
||||||
{
|
{
|
||||||
delwin(m_border_window);
|
delwin(m_border_window);
|
||||||
m_border_window = newpad(height, width);
|
m_border_window = newpad(height, width);
|
||||||
wattron(m_border_window, COLOR_PAIR(m_border));
|
wattron(m_border_window, COLOR_PAIR(int(m_border)));
|
||||||
box(m_border_window, 0, 0);
|
box(m_border_window, 0, 0);
|
||||||
width -= 2;
|
width -= 2;
|
||||||
height -= 2;
|
height -= 2;
|
||||||
@@ -345,22 +345,22 @@ void Window::resize(size_t new_width, size_t new_height)
|
|||||||
|
|
||||||
void Window::showBorder() const
|
void Window::showBorder() const
|
||||||
{
|
{
|
||||||
if (m_border != brNone)
|
if (m_border != Border::None)
|
||||||
{
|
{
|
||||||
::refresh();
|
::refresh();
|
||||||
prefresh(m_border_window, 0, 0, getStarty(), getStartX(), m_start_y+m_height, m_start_x+m_width);
|
prefresh(m_border_window, 0, 0, getStarty(), getStartX(), m_start_y+m_height, m_start_x+m_width);
|
||||||
}
|
}
|
||||||
if (!m_title.empty())
|
if (!m_title.empty())
|
||||||
{
|
{
|
||||||
if (m_border != brNone)
|
if (m_border != Border::None)
|
||||||
attron(COLOR_PAIR(m_border));
|
attron(COLOR_PAIR(int(m_border)));
|
||||||
else
|
else
|
||||||
attron(COLOR_PAIR(m_base_color));
|
attron(COLOR_PAIR(int(m_base_color)));
|
||||||
mvhline(m_start_y-1, m_start_x, 0, m_width);
|
mvhline(m_start_y-1, m_start_x, 0, m_width);
|
||||||
attron(A_BOLD);
|
attron(A_BOLD);
|
||||||
mvhline(m_start_y-2, m_start_x, 32, m_width); // clear title line
|
mvhline(m_start_y-2, m_start_x, 32, m_width); // clear title line
|
||||||
mvaddstr(m_start_y-2, m_start_x, m_title.c_str());
|
mvaddstr(m_start_y-2, m_start_x, m_title.c_str());
|
||||||
attroff(COLOR_PAIR(m_border) | A_BOLD);
|
attroff(COLOR_PAIR(int(m_border)) | A_BOLD);
|
||||||
}
|
}
|
||||||
::refresh();
|
::refresh();
|
||||||
}
|
}
|
||||||
@@ -741,7 +741,7 @@ bool Window::hasCoords(int &x, int &y)
|
|||||||
|
|
||||||
size_t Window::getWidth() const
|
size_t Window::getWidth() const
|
||||||
{
|
{
|
||||||
if (m_border != brNone)
|
if (m_border != Border::None)
|
||||||
return m_width+2;
|
return m_width+2;
|
||||||
else
|
else
|
||||||
return m_width;
|
return m_width;
|
||||||
@@ -750,7 +750,7 @@ size_t Window::getWidth() const
|
|||||||
size_t Window::getHeight() const
|
size_t Window::getHeight() const
|
||||||
{
|
{
|
||||||
size_t height = m_height;
|
size_t height = m_height;
|
||||||
if (m_border != brNone)
|
if (m_border != Border::None)
|
||||||
height += 2;
|
height += 2;
|
||||||
if (!m_title.empty())
|
if (!m_title.empty())
|
||||||
height += 2;
|
height += 2;
|
||||||
@@ -759,7 +759,7 @@ size_t Window::getHeight() const
|
|||||||
|
|
||||||
size_t Window::getStartX() const
|
size_t Window::getStartX() const
|
||||||
{
|
{
|
||||||
if (m_border != brNone)
|
if (m_border != Border::None)
|
||||||
return m_start_x-1;
|
return m_start_x-1;
|
||||||
else
|
else
|
||||||
return m_start_x;
|
return m_start_x;
|
||||||
@@ -768,7 +768,7 @@ size_t Window::getStartX() const
|
|||||||
size_t Window::getStarty() const
|
size_t Window::getStarty() const
|
||||||
{
|
{
|
||||||
size_t starty = m_start_y;
|
size_t starty = m_start_y;
|
||||||
if (m_border != brNone)
|
if (m_border != Border::None)
|
||||||
starty--;
|
starty--;
|
||||||
if (!m_title.empty())
|
if (!m_title.empty())
|
||||||
starty -= 2;
|
starty -= 2;
|
||||||
@@ -823,9 +823,9 @@ void Window::scroll(Scroll where)
|
|||||||
|
|
||||||
Window &Window::operator<<(Colors colors)
|
Window &Window::operator<<(Colors colors)
|
||||||
{
|
{
|
||||||
if (colors.fg == clEnd || colors.bg == clEnd)
|
if (colors.fg == Color::End || colors.bg == Color::End)
|
||||||
{
|
{
|
||||||
*this << clEnd;
|
*this << Color::End;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
m_color_stack.push(colors);
|
m_color_stack.push(colors);
|
||||||
@@ -837,12 +837,12 @@ Window &Window::operator<<(Color color)
|
|||||||
{
|
{
|
||||||
switch (color)
|
switch (color)
|
||||||
{
|
{
|
||||||
case clDefault:
|
case Color::Default:
|
||||||
while (!m_color_stack.empty())
|
while (!m_color_stack.empty())
|
||||||
m_color_stack.pop();
|
m_color_stack.pop();
|
||||||
setColor(m_base_color, m_base_bg_color);
|
setColor(m_base_color, m_base_bg_color);
|
||||||
break;
|
break;
|
||||||
case clEnd:
|
case Color::End:
|
||||||
if (!m_color_stack.empty())
|
if (!m_color_stack.empty())
|
||||||
m_color_stack.pop();
|
m_color_stack.pop();
|
||||||
if (!m_color_stack.empty())
|
if (!m_color_stack.empty())
|
||||||
@@ -851,7 +851,7 @@ Window &Window::operator<<(Color color)
|
|||||||
setColor(m_base_color, m_base_bg_color);
|
setColor(m_base_color, m_base_bg_color);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
m_color_stack.push(Colors(color, clDefault));
|
m_color_stack.push(Colors(color, Color::Default));
|
||||||
setColor(m_color_stack.top().fg, m_color_stack.top().bg);
|
setColor(m_color_stack.top().fg, m_color_stack.top().bg);
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
@@ -861,36 +861,36 @@ Window &Window::operator<<(Format format)
|
|||||||
{
|
{
|
||||||
switch (format)
|
switch (format)
|
||||||
{
|
{
|
||||||
case fmtNone:
|
case Format::None:
|
||||||
bold((m_bold_counter = 0));
|
bold((m_bold_counter = 0));
|
||||||
reverse((m_reverse_counter = 0));
|
reverse((m_reverse_counter = 0));
|
||||||
altCharset((m_alt_charset_counter = 0));
|
altCharset((m_alt_charset_counter = 0));
|
||||||
break;
|
break;
|
||||||
case fmtBold:
|
case Format::Bold:
|
||||||
bold(++m_bold_counter);
|
bold(++m_bold_counter);
|
||||||
break;
|
break;
|
||||||
case fmtBoldEnd:
|
case Format::NoBold:
|
||||||
if (--m_bold_counter <= 0)
|
if (--m_bold_counter <= 0)
|
||||||
bold((m_bold_counter = 0));
|
bold((m_bold_counter = 0));
|
||||||
break;
|
break;
|
||||||
case fmtUnderline:
|
case Format::Underline:
|
||||||
underline(++m_underline_counter);
|
underline(++m_underline_counter);
|
||||||
break;
|
break;
|
||||||
case fmtUnderlineEnd:
|
case Format::NoUnderline:
|
||||||
if (--m_underline_counter <= 0)
|
if (--m_underline_counter <= 0)
|
||||||
underline((m_underline_counter = 0));
|
underline((m_underline_counter = 0));
|
||||||
break;
|
break;
|
||||||
case fmtReverse:
|
case Format::Reverse:
|
||||||
reverse(++m_reverse_counter);
|
reverse(++m_reverse_counter);
|
||||||
break;
|
break;
|
||||||
case fmtReverseEnd:
|
case Format::NoReverse:
|
||||||
if (--m_reverse_counter <= 0)
|
if (--m_reverse_counter <= 0)
|
||||||
reverse((m_reverse_counter = 0));
|
reverse((m_reverse_counter = 0));
|
||||||
break;
|
break;
|
||||||
case fmtAltCharset:
|
case Format::AltCharset:
|
||||||
altCharset(++m_alt_charset_counter);
|
altCharset(++m_alt_charset_counter);
|
||||||
break;
|
break;
|
||||||
case fmtAltCharsetEnd:
|
case Format::NoAltCharset:
|
||||||
if (--m_alt_charset_counter <= 0)
|
if (--m_alt_charset_counter <= 0)
|
||||||
altCharset((m_alt_charset_counter = 0));
|
altCharset((m_alt_charset_counter = 0));
|
||||||
break;
|
break;
|
||||||
|
|||||||
32
src/window.h
32
src/window.h
@@ -112,19 +112,19 @@
|
|||||||
namespace NC {//
|
namespace NC {//
|
||||||
|
|
||||||
/// Colors used by NCurses
|
/// Colors used by NCurses
|
||||||
enum Color { clDefault, clBlack, clRed, clGreen, clYellow, clBlue, clMagenta, clCyan, clWhite, clEnd };
|
enum class Color { Default, Black, Red, Green, Yellow, Blue, Magenta, Cyan, White, End };
|
||||||
|
|
||||||
/// Format flags used by NCurses
|
/// Format flags used by NCurses
|
||||||
enum Format {
|
enum class Format {
|
||||||
fmtNone = clEnd+1,
|
None,
|
||||||
fmtBold, fmtBoldEnd,
|
Bold, NoBold,
|
||||||
fmtUnderline, fmtUnderlineEnd,
|
Underline, NoUnderline,
|
||||||
fmtReverse, fmtReverseEnd,
|
Reverse, NoReverse,
|
||||||
fmtAltCharset, fmtAltCharsetEnd
|
AltCharset, NoAltCharset
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Available border colors for window
|
/// Available border colors for window
|
||||||
enum Border { brNone, brBlack, brRed, brGreen, brYellow, brBlue, brMagenta, brCyan, brWhite };
|
enum class Border { None, Black, Red, Green, Yellow, Blue, Magenta, Cyan, White };
|
||||||
|
|
||||||
/// This indicates how much the window has to be scrolled
|
/// This indicates how much the window has to be scrolled
|
||||||
enum class Scroll { Up, Down, PageUp, PageDown, Home, End };
|
enum class Scroll { Up, Down, PageUp, PageDown, Home, End };
|
||||||
@@ -146,7 +146,7 @@ void destroyScreen();
|
|||||||
/// @see Window::operator<<()
|
/// @see Window::operator<<()
|
||||||
struct Colors
|
struct Colors
|
||||||
{
|
{
|
||||||
Colors(Color one, Color two = clDefault) : fg(one), bg(two) { }
|
Colors(Color one, Color two = Color::Default) : fg(one), bg(two) { }
|
||||||
Color fg;
|
Color fg;
|
||||||
Color bg;
|
Color bg;
|
||||||
};
|
};
|
||||||
@@ -266,7 +266,7 @@ struct Window
|
|||||||
/// Sets window's base color
|
/// Sets window's base color
|
||||||
/// @param fg foregound base color
|
/// @param fg foregound base color
|
||||||
/// @param bg background base color
|
/// @param bg background base color
|
||||||
void setBaseColor(Color fg, Color bg = clDefault);
|
void setBaseColor(Color fg, Color bg = Color::Default);
|
||||||
|
|
||||||
/// Sets window's border
|
/// Sets window's border
|
||||||
/// @param border new window's border
|
/// @param border new window's border
|
||||||
@@ -351,16 +351,16 @@ struct Window
|
|||||||
Window &operator<<(Colors colors);
|
Window &operator<<(Colors colors);
|
||||||
|
|
||||||
/// Applies foregound color to window. Note that colors applied
|
/// Applies foregound color to window. Note that colors applied
|
||||||
/// that way are stacked, i.e if you applied clRed, then clGreen
|
/// that way are stacked, i.e if you applied Color::Red, then Color::Green
|
||||||
/// and clEnd, current color would be clRed. If you want to discard
|
/// and Color::End, current color would be Color::Red. If you want to discard
|
||||||
/// all colors and fall back to base one, pass clDefault.
|
/// all colors and fall back to base one, pass Color::Default.
|
||||||
/// @param color new color value
|
/// @param color new color value
|
||||||
/// @return reference to itself
|
/// @return reference to itself
|
||||||
Window &operator<<(Color color);
|
Window &operator<<(Color color);
|
||||||
|
|
||||||
/// Applies format flag to window. Note that these attributes are
|
/// Applies format flag to window. Note that these attributes are
|
||||||
/// also stacked, so if you applied fmtBold twice, to get rid of
|
/// also stacked, so if you applied Format::Bold twice, to get rid of
|
||||||
/// it you have to pass fmtBoldEnd also twice.
|
/// it you have to pass Format::NoBold also twice.
|
||||||
/// @param format format flag
|
/// @param format format flag
|
||||||
/// @return reference to itself
|
/// @return reference to itself
|
||||||
Window &operator<<(Format format);
|
Window &operator<<(Format format);
|
||||||
@@ -419,7 +419,7 @@ protected:
|
|||||||
/// @param fg foregound color
|
/// @param fg foregound color
|
||||||
/// @param bg background color
|
/// @param bg background color
|
||||||
///
|
///
|
||||||
void setColor(Color fg, Color bg = clDefault);
|
void setColor(Color fg, Color bg = Color::Default);
|
||||||
|
|
||||||
/// Refreshes window's border
|
/// Refreshes window's border
|
||||||
///
|
///
|
||||||
|
|||||||
Reference in New Issue
Block a user