window: make color/format/border class enums

This commit is contained in:
Andrzej Rybczak
2012-10-06 19:04:59 +02:00
parent 1f61a083cf
commit df9ecabb55
30 changed files with 270 additions and 251 deletions

View File

@@ -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();
} }

View File

@@ -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);

View File

@@ -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];

View File

@@ -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());
} }
} }

View File

@@ -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()

View File

@@ -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;
} }

View File

@@ -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;
} }

View File

@@ -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)

View File

@@ -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)

View File

@@ -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);

View File

@@ -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();
} }

View File

@@ -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())

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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();
} }

View File

@@ -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";

View File

@@ -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;

View File

@@ -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;

View File

@@ -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));
} }
} }

View File

@@ -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();
} }

View File

@@ -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()

View File

@@ -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)

View File

@@ -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";

View File

@@ -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();
} }

View File

@@ -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)

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;

View File

@@ -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
/// ///