"Fossies" - the Fresh Open Source Software Archive 
Member "mp3info-0.8.5a/mp3curs.c" (6 Nov 2006, 4294 Bytes) of package /linux/misc/old/mp3info-0.8.5a.tgz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "mp3curs.c" see the
Fossies "Dox" file reference documentation.
1 /*
2 mp3curs.c - curses/ncurses interface for mp3info
3
4 Copyright (C) 2000-2006 Cedric Tefft <cedric@phreaker.net>
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19
20 ***************************************************************************
21
22 This program is based in part on MP3Info 0.5 by Ricardo Cerqueira <rmc@rccn.net>
23
24 */
25
26
27 #include "mp3info.h"
28
29
30 /*
31 * Check if Break is given, and if so, clean term and exit, else pad the input.
32 */
33
34 char *checkinput(int c, char *string, int length) {
35 if (c == CTRL_C) { endwin(); exit(0); }
36 return string;
37 }
38
39 /*
40 * Get the cursor to the right place, and get input
41 */
42
43 char *curs_addparam(WINDOW *win, int line, int length, char *buf) {
44 int c;
45 char string[TEXT_FIELD_LEN];
46
47 wmove(win,line,16);
48 c = wgetnstr(win,string,length);
49 strcpy(buf,checkinput(c,string,length));
50 return buf;
51 }
52
53 /*
54 * Bring up the curses window, then get and parse input, and build the tag.
55 */
56
57 void tagedit_curs(char *filename, int filenum, int fileoutof, id3tag *tag) {
58 WINDOW *mainwin;
59 char line[50], track_text[4], *genre, genre_text[30];
60 unsigned int track_num, genre_num;
61 line[0]='\0';
62
63 initscr(); cbreak(); noecho();
64 nonl();
65 mainwin = newwin(9,COLS,5,0);
66 intrflush(mainwin, FALSE);
67 keypad(mainwin, TRUE);
68 CenterText(1,VERSION);
69 /* CenterText(2,"by Ricardo Cerqueira (C)2000"); */
70 #ifdef HAVE_TOUCHWIN
71 touchwin(mainwin);
72 #endif
73 box(mainwin, 0, 0);
74 wmove(mainwin,1,1);
75 wprintw(mainwin,"Song Title: %s",tag->title);
76 wmove(mainwin,2,1);
77 wprintw(mainwin,"Artist Name: %s",tag->artist);
78 wmove(mainwin,3,1);
79 wprintw(mainwin,"Album Name: %s",tag->album);
80 wmove(mainwin,4,1);
81 wprintw(mainwin,"Year: %s",tag->year);
82 wmove(mainwin,5,1);
83 wprintw(mainwin,"Comment: %s",tag->comment);
84 wmove(mainwin,6,1);
85 if(tag->track[0] != '\0') {
86 sprintf(track_text,"%d",tag->track[0]);
87 } else {
88 track_text[0]='\0';
89 }
90 wprintw(mainwin,"Track: %s",track_text);
91 wmove(mainwin,7,1);
92 if(tag->genre[0] < 127) {
93 genre=typegenre[tag->genre[0]];
94 } else {
95 genre="";
96 }
97 strcpy(genre_text,genre);
98 wprintw(mainwin,"Genre: %s",genre);
99 wmove(mainwin,8,4);
100 wprintw(mainwin," (%d/%d) %s ",filenum,fileoutof,filename);
101 #ifdef __WIN32__
102 wmove(mainwin,8,COLS-23);
103 wprintw(mainwin," Press ^BREAK to quit ");
104 #else
105 wmove(mainwin,8,COLS-22);
106 wprintw(mainwin," Press ^C to quit ");
107 #endif
108 refresh();
109 echo();
110 curs_addparam(mainwin,1,30,line);
111 strncpy(tag->title,line,strlen(line));
112 curs_addparam(mainwin,2,30,line);
113 strncpy(tag->artist,line,strlen(line));
114 curs_addparam(mainwin,3,30,line);
115 strncpy(tag->album,line,strlen(line));
116 curs_addparam(mainwin,4,4,line);
117 strncpy(tag->year,line,strlen(line));
118 curs_addparam(mainwin,5,30,line);
119 strncpy(tag->comment,line,strlen(line));
120 curs_addparam(mainwin,6,30,line);
121 strncpy(track_text,line,strlen(line) + (strlen(line) < strlen (track_text) ? 0 : 1));
122 /* strncpy(track_text,line,3); */
123 curs_addparam(mainwin,7,30,line);
124 strncpy(genre_text,line,strlen(line) + (strlen(line) < strlen (genre_text) ? 0 : 1));
125
126 endwin();
127 if((track_num=atoi(track_text)) < 256) {
128 tag->track[0] = (unsigned char) track_num;
129 } else {
130 printf("ERROR - '%s' is not a valid track number.\n",track_text);
131 }
132 unpad(genre_text);
133 if((genre_num=get_genre(genre_text)) < 256) {
134 tag->genre[0] = (unsigned char) genre_num;
135 } else {
136 printf("ERROR - '%s' is not a valid genre name or number.\nUse '-G' for a list of valid genres.\n",genre_text);
137 }
138
139 }
140