33"""Form class for editing the metadata of a track"""
44
55import os
6+ import curses
67
78import stagger
89import npyscreen as npy
910
10- from . import _genres
11+ from . import _const
12+ from .base import ClidTitleText
1113
1214
1315class EditMeta (npy .ActionFormV2 ):
@@ -25,23 +27,23 @@ def create(self):
2527 self .meta .album = '' # revert what was just done
2628 self .meta .write ()
2729
28- self .tit = self .add (npy . TitleText , name = 'Title' , value = self .meta .title )
30+ self .tit = self .add (ClidTitleText , name = 'Title' , value = self .meta .title )
2931 self .nextrely += 1
30- self .alb = self .add (npy . TitleText , name = 'Album' , value = self .meta .album )
32+ self .alb = self .add (ClidTitleText , name = 'Album' , value = self .meta .album )
3133 self .nextrely += 1
32- self .art = self .add (npy . TitleText , name = 'Artist' , value = self .meta .artist )
34+ self .art = self .add (ClidTitleText , name = 'Artist' , value = self .meta .artist )
3335 self .nextrely += 1
34- self .ala = self .add (npy . TitleText , name = 'Album Artist' , value = self .meta .album_artist )
36+ self .ala = self .add (ClidTitleText , name = 'Album Artist' , value = self .meta .album_artist )
3537 self .nextrely += 2
3638
37- self .gen = self .add (npy . TitleText , name = 'Genre' , value = self .resolve_genre (self .meta .genre ))
39+ self .gen = self .add (ClidTitleText , name = 'Genre' , value = self .resolve_genre (self .meta .genre ))
3840 self .nextrely += 1
39- self .dat = self .add (npy . TitleText , name = 'Date/Year' , value = self .meta .date )
41+ self .dat = self .add (ClidTitleText , name = 'Date/Year' , value = self .meta .date )
4042 self .nextrely += 1
41- self .tno = self .add (npy . TitleText , name = 'Track Number' ,
43+ self .tno = self .add (ClidTitleText , name = 'Track Number' ,
4244 value = str (self .meta .track if self .meta .track != 0 else '' ))
4345 self .nextrely += 2
44- self .com = self .add (npy . TitleText , name = 'Comment' , value = self .meta .comment )
46+ self .com = self .add (ClidTitleText , name = 'Comment' , value = self .meta .comment )
4547
4648 def set_up_handlers (self ):
4749 super ().set_up_handlers ()
@@ -59,11 +61,11 @@ def resolve_genre(self, num_gen):
5961 str: Name of the genre (Electronic, Blues, etc). Returns
6062 num_gen itself if it doesn't match the format.
6163 """
62- match = _genres .GENRE_PAT .findall (num_gen )
64+ match = _const .GENRE_PAT .findall (num_gen )
6365
6466 if match :
6567 try :
66- return _genres .GENRES [int (match [0 ])]
68+ return _const .GENRES [int (match [0 ])]
6769 except IndexError :
6870 return ''
6971 else :
@@ -84,27 +86,31 @@ def on_cancel(self): # char is for handlers
8486
8587 def on_ok (self ): # char is for handlers
8688 """Save and switch to standard view"""
87- self .meta .date = self .dat .value
88- # FIXME: error thrown when date is not in the format YYYY-MM-DD
89-
90- self .meta .title = self .tit .value
91- self .meta .album = self .alb .value
92- self .meta .genre = self .gen .value
93- self .meta .artist = self .art .value
94- self .meta .comment = self .com .value
95- self .meta .album_artist = self .ala .value
89+ try :
90+ self .meta .date = self .dat .value
91+ except ValueError :
92+ npy .notify_confirm (message = 'Date should be of the form YYYY-MM-DD' ,
93+ title = 'Invalid Date Format' , editw = 1 )
94+ return None
9695
9796 track = self .tno .value if self .tno .value != '' else '0' # automatically converted to int by stagger
9897 try :
9998 int (track )
10099 except ValueError :
101- npy .notify_confirm (message = 'Track Number can only take integer values' ,
102- title = 'Track Number not an integer ' , editw = 0 )
100+ npy .notify_confirm (message = 'Track number can only take integer values' ,
101+ title = 'Invalid Track Number' , editw = 1 )
103102 return None
104103 else :
105104 self .meta .track = track
106105 # FIXME: values of tags are reset to initial when ok is pressed(no prob with ^S)
107106
107+ self .meta .title = self .tit .value
108+ self .meta .album = self .alb .value
109+ self .meta .genre = self .gen .value
110+ self .meta .artist = self .art .value
111+ self .meta .comment = self .com .value
112+ self .meta .album_artist = self .ala .value
113+
108114 self .meta .write ()
109115
110116 status_meta = '{art} - {alb} - {tno}. {title} ' .format (
0 commit comments