Группа :: Звук
Пакет: ncmpcpp
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: ncmpcpp-0.9.2-alt1.patch
Скачать
Скачать
.gear/rules | 2 ++
.gear/tags/list | 1 +
.gear/upstream/remotes | 3 ++
.gitignore | 1 +
ncmpcpp.spec | 80 ++++++++++++++++++++++++++++++++++++++++++++++
src/screens/tag_editor.cpp | 60 +++++++++++++++++-----------------
6 files changed, 117 insertions(+), 30 deletions(-)
diff --git a/.gear/rules b/.gear/rules
new file mode 100644
index 00000000..0030d2a7
--- /dev/null
+++ b/.gear/rules
@@ -0,0 +1,2 @@
+tar: @version@:.
+diff: @version@:. . name=@name@-@version@-@release@.patch
diff --git a/.gear/tags/list b/.gear/tags/list
new file mode 100644
index 00000000..b6fa5336
--- /dev/null
+++ b/.gear/tags/list
@@ -0,0 +1 @@
+2d96361862e0155d85394d879b1e4abc1e2488aa 0.9.2
diff --git a/.gear/upstream/remotes b/.gear/upstream/remotes
new file mode 100644
index 00000000..3fd2552d
--- /dev/null
+++ b/.gear/upstream/remotes
@@ -0,0 +1,3 @@
+[remote "upstream"]
+ url = https://github.com/arybczak/ncmpcpp.git
+ fetch = +refs/heads/*:refs/remotes/upstream/*
diff --git a/.gitignore b/.gitignore
index ae5fc5af..dbe28952 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+*~
*.o
GTAGS
GRTAGS
diff --git a/ncmpcpp.spec b/ncmpcpp.spec
new file mode 100644
index 00000000..2743f835
--- /dev/null
+++ b/ncmpcpp.spec
@@ -0,0 +1,80 @@
+%define _unpackaged_files_terminate_build 1
+
+%define libquadmath_arches %ix86 x86_64 ppc64le
+
+Name: ncmpcpp
+Version: 0.9.2
+Release: alt1
+
+Summary: ncurses-based client for the Music Player Daemon (MPD)
+
+Group: Sound
+License: GPLv2+
+URL: https://rybczak.net/ncmpcpp/
+
+VCS: https://github.com/ncmpcpp/ncmpcpp.git
+Source: %name-%version.tar
+# git://git.altlinux.org/gears/n/ncmpcpp.git
+Patch1: %name-%version-%release.patch
+
+# Automatically added by buildreq on Fri Jul 28 2017
+# optimized out: boost-devel boost-devel-headers glibc-kernheaders-x86 libncurses-devel libstdc++-devel libtinfo-devel perl pkg-config python-base python3 python3-base
+BuildRequires: boost-filesystem-devel boost-locale-devel boost-program_options-devel gcc-c++ glibc-devel-static glibc-kernheaders-generic libcurl-devel libfftw3-devel libmpdclient-devel libncursesw-devel libreadline-devel libtag-devel python3-dev
+%ifarch %libquadmath_arches
+BuildRequires: libquadmath-devel
+%endif
+
+%description
+ncmpcpp is almost an exact clone of ncmpc which is a text-mode client
+for MPD, the Music Player Daemon. It provides a keyboard oriented and
+consistent interface to MPD and contains some new features ncmpc
+doesn't have. It's been also rewritten from scratch in C++.
+
+%prep
+%setup
+%patch1 -p1
+
+%build
+%autoreconf
+%configure \
+ --enable-clock \
+ --enable-outputs \
+ --enable-visualizer \
+ --with-fftw \
+ --with-taglib \
+ #
+%make_build
+
+%install
+%makeinstall_std
+mv %buildroot%_docdir/%name percentDoc
+
+%files
+%doc percentDoc/*
+%_bindir/%name
+%_man1dir/%name.1*
+
+%changelog
+* Thu Dec 16 2021 Arseny Maslennikov <arseny@altlinux.org> 0.9.2-alt1
+- 0.9.1 -> 0.9.2.
+
+* Tue Jan 05 2021 Arseny Maslennikov <arseny@altlinux.org> 0.9.1-alt1
+- 0.8.1 -> 0.9.1.
+- Restore the package for aarch64.
+
+* Tue Dec 03 2019 Aleksei Nikiforov <darktemplar@altlinux.org> 0.8.1-alt2
+- Excluded from aarch64 and rebuilt with new boost-1.71.0.
+
+* Thu May 31 2018 Aleksei Nikiforov <darktemplar@altlinux.org> 0.8.1-alt1.1
+- NMU: rebuilt with boost-1.67.0
+
+* Sun Nov 12 2017 Arseny Maslennikov <arseny@altlinux.org> 0.8.1-alt1
+- 0.8.1-alt1
+- Update .gitignore
+
+* Wed Oct 11 2017 Arseny Maslennikov <arseny@altlinux.org> 0.8-alt2
+- Rebuilt with libboost_*.so.1.65.0
+
+* Fri Jul 28 2017 Arseny Maslennikov <arseny@altlinux.org> 0.8-alt1
+- Initial build for ALT Sisyphus
+
diff --git a/src/screens/tag_editor.cpp b/src/screens/tag_editor.cpp
index d754f499..9142b26d 100644
--- a/src/screens/tag_editor.cpp
+++ b/src/screens/tag_editor.cpp
@@ -131,7 +131,7 @@ TagEditor::TagEditor() : FParser(0), FParserHelper(0), FParserLegend(0), FParser
{
PatternsFile = Config.ncmpcpp_directory + "patterns.list";
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::Border());
setHighlightFixes(*Dirs);
Dirs->cyclicScrolling(Config.use_cyclic_scrolling);
@@ -139,7 +139,7 @@ TagEditor::TagEditor() : FParser(0), FParserHelper(0), FParserLegend(0), FParser
Dirs->setItemDisplayer([](NC::Menu<std::pair<std::string, std::string>> &menu) {
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::Border());
setHighlightInactiveColumnFixes(*TagTypes);
TagTypes->cyclicScrolling(Config.use_cyclic_scrolling);
@@ -147,7 +147,7 @@ TagEditor::TagEditor() : FParser(0), FParserHelper(0), FParserLegend(0), FParser
TagTypes->setItemDisplayer([](NC::Menu<std::string> &menu) {
menu << Charset::utf8ToLocale(menu.drawn()->value());
});
-
+
for (const SongInfo::Metadata *m = SongInfo::Tags; m->Name; ++m)
TagTypes->addItem(m->Name);
TagTypes->addSeparator();
@@ -163,7 +163,7 @@ TagEditor::TagEditor() : FParser(0), FParserHelper(0), FParserLegend(0), FParser
TagTypes->addSeparator();
TagTypes->addItem("Reset");
TagTypes->addItem("Save");
-
+
Tags = new TagsWindow(NC::Menu<MPD::MutableSong>(RightColumnStartX, MainStartY, RightColumnWidth, MainHeight, Config.titles_visibility ? "Tags" : "", Config.main_color, NC::Border()));
setHighlightInactiveColumnFixes(*Tags);
Tags->cyclicScrolling(Config.use_cyclic_scrolling);
@@ -171,11 +171,11 @@ TagEditor::TagEditor() : FParser(0), FParserHelper(0), FParserLegend(0), FParser
Tags->setSelectedPrefix(Config.selected_item_prefix);
Tags->setSelectedSuffix(Config.selected_item_suffix);
Tags->setItemDisplayer(Display::Tags);
-
+
auto parser_display = [](NC::Menu<std::string> &menu) {
menu << Charset::utf8ToLocale(menu.drawn()->value());
};
-
+
FParserDialog = new NC::Menu<std::string>((COLS-FParserDialogWidth)/2, (MainHeight-FParserDialogHeight)/2+MainStartY, FParserDialogWidth, FParserDialogHeight, "", Config.main_color, Config.window_border);
FParserDialog->cyclicScrolling(Config.use_cyclic_scrolling);
FParserDialog->centeredCursor(Config.centered_cursor);
@@ -183,16 +183,16 @@ TagEditor::TagEditor() : FParser(0), FParserHelper(0), FParserLegend(0), FParser
FParserDialog->addItem("Get tags from filename");
FParserDialog->addItem("Rename files");
FParserDialog->addItem("Cancel");
-
+
FParser = new NC::Menu<std::string>((COLS-FParserWidth)/2, (MainHeight-FParserHeight)/2+MainStartY, FParserWidthOne, FParserHeight, "_", Config.main_color, Config.active_window_border);
FParser->cyclicScrolling(Config.use_cyclic_scrolling);
FParser->centeredCursor(Config.centered_cursor);
FParser->setItemDisplayer(parser_display);
-
+
FParserLegend = new NC::Scrollpad((COLS-FParserWidth)/2+FParserWidthOne, (MainHeight-FParserHeight)/2+MainStartY, FParserWidthTwo, FParserHeight, "Legend", Config.main_color, Config.window_border);
-
+
FParserPreview = new NC::Scrollpad((COLS-FParserWidth)/2+FParserWidthOne, (MainHeight-FParserHeight)/2+MainStartY, FParserWidthTwo, FParserHeight, "Preview", Config.main_color, Config.window_border);
-
+
w = Dirs;
}
@@ -204,7 +204,7 @@ void TagEditor::SetDimensions(size_t x_offset, size_t width)
MiddleColumnStartX = LeftColumnStartX+LeftColumnWidth+1;
RightColumnWidth = width-LeftColumnWidth-MiddleColumnWidth-2;
RightColumnStartX = MiddleColumnStartX+MiddleColumnWidth+1;
-
+
FParserDialogWidth = std::min(30, COLS);
FParserDialogHeight = std::min(size_t(5), MainHeight);
FParserWidth = width*0.9;
@@ -218,7 +218,7 @@ void TagEditor::resize()
size_t x_offset, width;
getWindowResizeParams(x_offset, width);
SetDimensions(x_offset, width);
-
+
Dirs->resize(LeftColumnWidth, MainHeight);
TagTypes->resize(MiddleColumnWidth, MainHeight);
Tags->resize(RightColumnWidth, MainHeight);
@@ -226,16 +226,16 @@ void TagEditor::resize()
FParser->resize(FParserWidthOne, FParserHeight);
FParserLegend->resize(FParserWidthTwo, FParserHeight);
FParserPreview->resize(FParserWidthTwo, FParserHeight);
-
+
Dirs->moveTo(LeftColumnStartX, MainStartY);
TagTypes->moveTo(MiddleColumnStartX, MainStartY);
Tags->moveTo(RightColumnStartX, MainStartY);
-
+
FParserDialog->moveTo(x_offset+(width-FParserDialogWidth)/2, (MainHeight-FParserDialogHeight)/2+MainStartY);
FParser->moveTo(x_offset+(width-FParserWidth)/2, (MainHeight-FParserHeight)/2+MainStartY);
FParserLegend->moveTo(x_offset+(width-FParserWidth)/2+FParserWidthOne, (MainHeight-FParserHeight)/2+MainStartY);
FParserPreview->moveTo(x_offset+(width-FParserWidth)/2+FParserWidthOne, (MainHeight-FParserHeight)/2+MainStartY);
-
+
hasToBeResized = 0;
}
@@ -258,7 +258,7 @@ void TagEditor::refresh()
TagTypes->display();
drawSeparator(RightColumnStartX-1);
Tags->display();
-
+
if (w == FParserDialog)
{
FParserDialog->display();
@@ -276,7 +276,7 @@ void TagEditor::update()
{
Dirs->Window::clear();
Tags->clear();
-
+
if (itsBrowsedDir != "/")
Dirs->addItem(std::make_pair("..", getParentDirectory(itsBrowsedDir)));
else
@@ -292,7 +292,7 @@ void TagEditor::update()
LocaleBasedSorting(std::locale(), Config.ignore_leading_the));
Dirs->display();
}
-
+
if (Tags->empty())
{
Tags->reset();
@@ -303,7 +303,7 @@ void TagEditor::update()
LocaleBasedSorting(std::locale(), Config.ignore_leading_the));
Tags->refresh();
}
-
+
if (w == TagTypes && TagTypes->choice() < 13)
{
Tags->refresh();
@@ -950,13 +950,13 @@ void TagEditor::LocateSong(const MPD::Song &s)
{
if (myScreen == this)
return;
-
+
if (s.getDirectory().empty())
return;
-
+
if (Global::myScreen != this)
switchTo();
-
+
// go to right directory
if (itsBrowsedDir != s.getDirectory())
{
@@ -973,7 +973,7 @@ void TagEditor::LocateSong(const MPD::Song &s)
}
if (itsBrowsedDir == "/")
Dirs->reset(); // go to the first pos, which is "." (music dir root)
-
+
// highlight directory we need and get files from it
std::string dir = getBasename(s.getDirectory());
for (size_t i = 0; i < Dirs->size(); ++i)
@@ -986,17 +986,17 @@ void TagEditor::LocateSong(const MPD::Song &s)
}
// refresh window so we can be highlighted item
Dirs->refresh();
-
+
Tags->clear();
update();
-
+
// reset TagTypes since it can be under Filename
// and then songs in right column are not visible.
TagTypes->reset();
// go to the right column
nextColumn();
nextColumn();
-
+
// highlight our file
for (size_t i = 0; i < Tags->size(); ++i)
{
@@ -1122,7 +1122,7 @@ std::string ParseFilename(MPD::MutableSong &s, std::string mask, bool preview)
std::vector<std::string> separators;
std::vector< std::pair<char, std::string> > tags;
std::string file = s.getName().substr(0, s.getName().rfind("."));
-
+
size_t i = mask.find("%");
if (!mask.substr(0, i).empty())
@@ -1151,19 +1151,19 @@ std::string ParseFilename(MPD::MutableSong &s, std::string mask, bool preview)
goto PARSE_FAILED;
tags.at(i).second = file;
}
-
+
if (0) // tss...
{
PARSE_FAILED:
return "Error while parsing filename!\n";
}
-
+
for (auto it = tags.begin(); it != tags.end(); ++it)
{
for (std::string::iterator j = it->second.begin(); j != it->second.end(); ++j)
if (*j == '_')
*j = ' ';
-
+
if (!preview)
{
MPD::MutableSong::SetFunction set = IntoSetFunction(it->first);