% --------------------------------------------------------------------------
% the LEADSHEETS package
% 
%   typesetting leadsheets and songbooks
%
% --------------------------------------------------------------------------
% Clemens Niederberger
% E-Mail: contact@mychemistry.eu
% --------------------------------------------------------------------------
% Copyright 2014--2022 Clemens Niederberger
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
\ProvidesClass{leadsheet}[2017/01/23 v0.5a leadsheets class (part of the leadsheets package)]
\LoadClassWithOptions{scrartcl}

\RequirePackage{leadsheets}

\RequirePackage{etoolbox}
\RequirePackage{translations}

\defleadsheetstranslation{Fallback}{page}{page}
\defleadsheetstranslation{Fallback}{of}{of}
\defleadsheetstranslation{Fallback}{music}{music}
\defleadsheetstranslation{Fallback}{text}{text}
\defleadsheetstranslation{Fallback}{as-played-by}{as played by}
\defleadsheetstranslation{Fallback}{choir}{choir}

\defleadsheetstranslation{German}{page}{Seite}
\defleadsheetstranslation{German}{of}{von}
\defleadsheetstranslation{German}{music}{Musik}
\defleadsheetstranslation{German}{text}{Text}
\defleadsheetstranslation{German}{as-played-by}{wie gespielt von}
\defleadsheetstranslation{German}{choir}{Chor}

\providecommand*\ls@songtitle{}
\providecommand*\ls@songinterpret{}

\definesongproperty{language}

\newbool{ls@comma}
\newrobustcmd*\ls@addcomma{%
  \ifbool{ls@comma}{, }{}%
  \boolfalse{ls@comma}%
}

\newrobustcmd*\ls@printproperty[2]{%
  \ifsongproperty{#1}{%
    \ls@addcomma
    #2%
    \booltrue{ls@comma}%
  }{}%
}

\definesongtitletemplate{leadsheet}{%
  \section*{%
    \songproperty{title}%
    \ifsongproperty{subtitle}{ (\songproperty{subtitle})}{}%
  }
  \xdef\ls@songtitle{\songproperty{title}}%
  \ifsongproperty{composer}
    {%
      \ifsongproperty{lyrics}
        {%
          \leadsheetstranslate{lyrics}:
          \printsongpropertylist{lyrics}{ \& }{, }{ \& },
          \booltrue{ls@comma}%
        }
        {}%
      \leadsheetstranslate{music}:
      \printsongpropertylist{composer}{ \& }{, }{ \& }%
      \booltrue{ls@comma}%
    }
    {%
      \ifsongproperty{lyrics}
        {%
          \leadsheetstranslate{lyrics}:
          \printsongpropertylist{lyrics}{ \& }{, }{ \& }%
          \ifsongproperty{music}{, }{}%
          \booltrue{ls@comma}%
        }
        {}%
      \ifsongproperty{music}
        {%
          \ifsongproperty{lyrics}
            {}
            {\leadsheetstranslate{lyrics} \& }%
          \leadsheetstranslate{music}:
          \printsongpropertylist{music}{ \& }{, }{ \& }%
          \booltrue{ls@comma}%
        }
        {}%
    }%
  \ifsongproperty{band}
    {%
      \ls@addcomma
      \leadsheetstranslate{as-played-by}:
      \songproperty{band}%
      \xdef\ls@songinterpret{\songproperty{band}}%
      \booltrue{ls@comma}%
    }{%
      \ifsongproperty{interpret}
        {%
          \ls@addcomma
          \leadsheetstranslate{as-played-by}:
          \songproperty{interpret}%
          \xdef\ls@songinterpret{\songproperty{interpret}}%
          \booltrue{ls@comma}%
        }
        {}%
    }%
  \ifsongproperty{key}
    {%
      \ls@addcomma
      \leadsheetstranslate{key}:
      \expandcode{\writechord{\songproperty{key}}}
    }
    {}%
  \ifsongproperty{language}
    {%
      \ifboolexpr{
        test {\leadsheetsifpackageloaded{babel}} or
        test {\leadsheetsifpackageloaded{poyglossia}}
      }{\expandcode{\noexpand\selectlanguage{\songproperty{language}}}}
      {}%
    }
    {}%
}

\setleadsheets{
  title-template = leadsheet ,
  bar-shortcuts ,
  verse/numbered ,
  verses-format = ,
  verses-label-format = \bfseries ,
  info/format = \itshape ,
  chorus/format = \itshape
}

\RequirePackage{scrlayer-scrpage,zref-totpages}
\pagestyle{scrheadings}
\rohead{}
\cohead{%
  \ifnum\ztotpages>1
    \ifnum\value{page}=1
    \else
      \ls@songtitle
      \ifdefvoid\ls@songinterpret{}{ (\ls@songinterpret)}%
    \fi
  \fi
}
\cofoot{%
  \ifnum\ztotpages>1
    \leadsheetstranslate{page}~\thepage~%
    \leadsheetstranslate{of}~\ztotpages
  \fi
}

\LeadsheetSurvive
\provideversetype{prechorus}[name=Prechorus]
\provideversetype*{prechorus*}[name=Prechorus]

\providerobustcmd*\lsenparen[1]{%
  \expandcode{\noexpand\mklsenparen\mklsenparens{\unexpanded{#1}}}%
}
\providecommand*\mklsenparens{[]}
\providecommand*\mklsenparen[3]{\textup{#1}#3\textup{#2}}

\providerobustcmd*\instruction[1]{\lsenparen{\mkinstruction{#1}}}
\providecommand*\mkinstruction[1]{\emph{#1}}

\providerobustcmd*\choir[1]{\null\qquad\mkchoir{#1}}
\providecommand*\mkchoir[1]{\instruction{\leadsheetstranslate{choir}: #1}}
\LeadsheetEndSurvive

\endinput
2016/08/17 - first version added to `leadsheets'
