~ubuntu-branches/ubuntu/saucy/tlf/saucy

« back to all changes in this revision

Viewing changes to src/edit_last.c

  • Committer: Package Import Robot
  • Author(s): John T. Nogatch
  • Date: 2013-02-09 14:56:34 UTC
  • mfrom: (1.2.5) (3.1.6 sid)
  • Revision ID: package-import@ubuntu.com-20130209145634-de47b40lyf5ntgsu
Tags: 1.1.5-1
* Update from upstream git
* LP: #854080, #514303

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 */
19
19
 
20
20
        /* ------------------------------------------------------------
21
 
        *   edit last qso
22
 
        *
23
 
        *--------------------------------------------------------------*/
 
21
         *   edit last qso
 
22
         *
 
23
         *--------------------------------------------------------------*/
24
24
 
25
25
#include "globalvars.h"
26
26
#include "edit_last.h"
27
27
#include "clear_display.h"
28
28
 
29
 
char logline_edit[5][82];
 
29
char logline_edit[5][88];
30
30
 
31
31
int edit_last(void)
32
32
{
33
 
        
34
 
        int j=0, b, k, ii=0;
35
 
        int lfile;
36
 
        struct stat statbuf;
37
 
        int editline = 4;
38
 
 
39
 
        stop_backgrnd_process = 1;         //(no qso add during edit process)
40
 
 
41
 
        attron(A_STANDOUT);
42
 
 
43
 
        attron(COLOR_PAIR(COLOR_GREEN));
44
 
        mvprintw(7 + editline,0, logline_edit[editline]);
45
 
 
46
 
 
47
 
 
48
 
        b =  29;
49
 
        mvprintw(7 + editline, b, "");
50
 
 
51
 
        while ((j != 27) && (j != '\n')){
52
 
 
53
 
                j = onechar();
54
 
                
55
 
                if(j == 1) {                                    // ctrl A, beginning of line
56
 
                                b = 1;
57
 
                                attron(COLOR_PAIR(COLOR_GREEN)  | A_STANDOUT);
58
 
                                mvprintw(7 + editline,0, logline_edit[editline]);
59
 
                                mvprintw(7 + editline, b, "");
60
 
                                refresh();
61
 
                }else if(j == 5) {                                      // ctrl E, end of line
62
 
                                b = 77;
63
 
                                attron(COLOR_PAIR(COLOR_GREEN)  | A_STANDOUT);
64
 
                                mvprintw(7 + editline,0, logline_edit[editline]);
65
 
                                mvprintw(7 + editline, b, "");
66
 
                                refresh();
67
 
                }else if(j == 9) {                                      // TAB, next field
68
 
                                if (b == 1) b = 17;
69
 
                                else if (b == 17) b = 29;
70
 
                                else if (b == 29) b = 54;
71
 
                                else if (b == 54) b = 68;
72
 
                                else if (b == 68) b = 77;
73
 
                                else if (b == 77) b = 1;
74
 
 
75
 
                                attron(COLOR_PAIR(COLOR_GREEN)  | A_STANDOUT);
76
 
                                mvprintw(7 + editline,0, logline_edit[editline]);
77
 
                                mvprintw(7 + editline, b, "");
78
 
                                refresh();
79
 
 
80
 
                }else if(j == 152) {                    // up
81
 
                        if (editline > (6-nr_qsos) && (editline > 0)) {
82
 
                                attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT);
83
 
                                mvprintw(7 + editline,0, logline_edit[editline]);
84
 
                                editline--;
85
 
                                attron(COLOR_PAIR(COLOR_GREEN)  | A_STANDOUT);
86
 
                                mvprintw(7 + editline,0, logline_edit[editline]);
87
 
                                mvprintw(7 + editline, b, "");
88
 
 
89
 
                                refresh();
90
 
                        } else {
91
 
                                logview();
92
 
                                j = 27;
93
 
                        }
94
 
 
95
 
                }else if(j == 153) {                    // down
96
 
 
97
 
                        if (editline < 4) {
98
 
                                attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT);
99
 
                                mvprintw(7 + editline,0, logline_edit[editline]);
100
 
                                editline++;
101
 
                                attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT);
102
 
                                mvprintw(7 + editline,0, logline_edit[editline]);
103
 
                                mvprintw(7 + editline, b, "");
104
 
 
105
 
                                refresh();
106
 
                        } else j = 27;                              /* escape */
107
 
 
108
 
 
109
 
                }else if (j == 155){
110
 
 
111
 
                        if (b >= 1)
112
 
                                b--;
113
 
 
114
 
                        mvprintw(7 + editline, 0, logline_edit[editline]);
115
 
                        mvprintw(7 + editline,  b, "");
116
 
                        refresh();
117
 
 
118
 
                }else if (j == 154){
119
 
                        if (b < 79){
120
 
                                b++;
121
 
                        }
122
 
                        mvprintw(7 + editline,0, logline_edit[editline]);
123
 
                        mvprintw(7 + editline, b, "");
124
 
                        refresh();
125
 
 
126
 
                } else if ((j == 160) && (b >= 0 ) && ( b< 28 ) ) {                            // insert
127
 
 
128
 
                        for (k = 28; k >b; k--)
129
 
                                logline_edit[editline][k] = logline_edit[editline][k-1];
130
 
                        logline_edit[editline][b] = ' ';
131
 
                        mvprintw(7 + editline,0, logline_edit[editline]);
132
 
                        mvprintw(7 + editline, b, "");
133
 
                        refresh();
134
 
 
135
 
                } else if ((j == 160) && (b >= 29 ) && ( b< 39 ) ) {                            // insert  call
136
 
                                for (k = 39; k >b; k--)
137
 
                                        logline_edit[editline][k] = logline_edit[editline][k-1];
138
 
                                logline_edit[editline][b] = ' ';
139
 
                                mvprintw(7 + editline,0, logline_edit[editline]);
140
 
                                mvprintw(7 + editline, b, "");
141
 
                                refresh();
142
 
                        
143
 
                } else if ((j == 160) && (b >= 54 ) && ( b< 64 ) ) {                            // insert
144
 
 
145
 
                        for (k = 64; k >b; k--)
146
 
                                logline_edit[editline][k] = logline_edit[editline][k-1];
147
 
                        logline_edit[editline][b] = ' ';
148
 
                        mvprintw(7 + editline,0, logline_edit[editline]);
149
 
                        mvprintw(7 + editline, b, "");
150
 
                        refresh();
151
 
 
152
 
                } else if ((j == 160) && (b >= 68 ) && ( b< 76 ) ) {                            // insert
153
 
 
154
 
                        for (k = 76; k >b; k--)
155
 
                                logline_edit[editline][k] = logline_edit[editline][k-1];
156
 
                        logline_edit[editline][b] = ' ';
157
 
                        mvprintw(7 + editline,0, logline_edit[editline]);
158
 
                        mvprintw(7 + editline, b, "");
159
 
                        refresh();
160
 
 
161
 
                } else if ((j == 161) && (b >= 1 ) && ( b< 28 )) {                            // delete
162
 
 
163
 
                        for (k = b; k < 28; k++)
164
 
                                logline_edit[editline][k] = logline_edit[editline][k+1];
165
 
 
166
 
                        mvprintw(7 + editline,0, logline_edit[editline]);
167
 
                        mvprintw(7 + editline, b, "");
168
 
                        refresh();
169
 
 
170
 
 
171
 
                } else if ((j == 161) && (b >= 29 ) && ( b< 39 )) {                            // delete
172
 
 
173
 
                        for (k = b; k < 39; k++)
174
 
                                logline_edit[editline][k] = logline_edit[editline][k+1];
175
 
 
176
 
                        mvprintw(7 + editline,0, logline_edit[editline]);
177
 
                        mvprintw(7 + editline, b, "");
178
 
                        refresh();
179
 
 
180
 
                } else if ((j == 161) && (b >= 68 ) && ( b< 76 )) {                            // delete
181
 
 
182
 
                        for (k = b; k < 76; k++)
183
 
                                logline_edit[editline][k] = logline_edit[editline][k+1];
184
 
 
185
 
                        mvprintw(7 + editline,0, logline_edit[editline]);
186
 
                        mvprintw(7 + editline, b, "");
187
 
                        refresh();
188
 
 
189
 
                } else if ((j == 161) && (b >= 54 ) && ( b< 64 )) {                            // delete
190
 
 
191
 
                        for (k = b; k < 64; k++)
192
 
                                logline_edit[editline][k] = logline_edit[editline][k+1];
193
 
 
194
 
                        mvprintw(7 + editline,0, logline_edit[editline]);
195
 
                        mvprintw(7 + editline, b, "");
196
 
                        refresh();
197
 
 
198
 
 
199
 
                }else if (j != 27){
200
 
 
201
 
                        if ((j >= 97) && (j <= 122))
202
 
                                j = j - 32;
203
 
                        if ((j >= 32) && (j<97)){
204
 
                                logline_edit[editline][b] = j;
205
 
                                mvprintw(7 + editline,0, logline_edit[editline]);
206
 
                                if ((b < strlen(logline_edit[editline])-2) && (b < 80))
207
 
                                        b++;
208
 
                                mvprintw(7 + editline, b, "");
209
 
                        }
210
 
                }
211
 
 
212
 
        }
213
 
 
214
 
 
215
 
 
216
 
        attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT);
217
 
 
218
 
        mvprintw(7 + editline,0, logline_edit[editline]);
219
 
        refresh();
220
 
 
221
 
        if ((lfile = open(logfile, O_RDWR)) < 0){
222
 
 
223
 
                mvprintw(24,0, "I can not find the logfile...");
224
 
                refresh();
225
 
                sleep(2);
226
 
        }  else {
227
 
 
228
 
 
229
 
                for (ii = 4; ii >=0; ii--) {
230
 
 
231
 
                        fstat(lfile, &statbuf);
232
 
 
233
 
                        if(statbuf.st_size >  80) {
234
 
                                ftruncate(lfile, statbuf.st_size -  81);
235
 
                                nr_qsos--;
236
 
                                qsos[nr_qsos][0]='\0';
237
 
                                fsync(lfile);
238
 
 
239
 
                        } else break;
240
 
 
241
 
                }
242
 
 
243
 
 
244
 
        }
245
 
 
246
 
        close(lfile);
247
 
 
 
33
 
 
34
    int j = 0, b, k, ii = 0;
 
35
    int lfile, rc;
 
36
    struct stat statbuf;
 
37
    int editline = 4;
 
38
 
 
39
    stop_backgrnd_process = 1;  //(no qso add during edit process)
 
40
 
 
41
    attron(A_STANDOUT);
 
42
 
 
43
    attron(COLOR_PAIR(COLOR_GREEN));
 
44
    mvprintw(7 + editline, 0, logline_edit[editline]);
 
45
    refreshp();
 
46
 
 
47
    b = 29;
 
48
    mvprintw(7 + editline, b, "");
 
49
 
 
50
    while ((j != 27) && (j != '\n')) {
 
51
 
 
52
        j = onechar();
 
53
 
 
54
        if (j == 1) {           // ctrl A, beginning of line
 
55
            b = 1;
 
56
            attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT);
 
57
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
58
            mvprintw(7 + editline, b, "");
 
59
            refreshp();
 
60
        } else if (j == 5) {    // ctrl E, end of line
 
61
            b = 77;
 
62
            attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT);
 
63
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
64
            mvprintw(7 + editline, b, "");
 
65
            refreshp();
 
66
        } else if (j == 9) {    // TAB, next field
 
67
            if (b == 1)
 
68
                b = 17;
 
69
            else if (b == 17)
 
70
                b = 29;
 
71
            else if (b == 29)
 
72
                b = 54;
 
73
            else if (b == 54)
 
74
                b = 68;
 
75
            else if (b == 68)
 
76
                b = 77;
 
77
            else if (b == 77)
 
78
                b = 1;
 
79
 
 
80
            attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT);
 
81
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
82
            mvprintw(7 + editline, b, "");
 
83
            refreshp();
 
84
 
 
85
        } else if (j == 152) {  // up
 
86
            if (editline > (6 - nr_qsos) && (editline > 0)) {
 
87
                attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT);
 
88
                mvprintw(7 + editline, 0, logline_edit[editline]);
 
89
                editline--;
 
90
                attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT);
 
91
                mvprintw(7 + editline, 0, logline_edit[editline]);
 
92
                mvprintw(7 + editline, b, "");
 
93
 
 
94
                refreshp();
 
95
            } else {
 
96
                logview();
 
97
                j = 27;
 
98
            }
 
99
 
 
100
        } else if (j == 153) {  // down
 
101
 
 
102
            if (editline < 4) {
 
103
                attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT);
 
104
                mvprintw(7 + editline, 0, logline_edit[editline]);
 
105
                editline++;
 
106
                attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT);
 
107
                mvprintw(7 + editline, 0, logline_edit[editline]);
 
108
                mvprintw(7 + editline, b, "");
 
109
 
 
110
                refreshp();
 
111
            } else
 
112
                j = 27;         /* escape */
 
113
 
 
114
        } else if (j == 155) {
 
115
 
 
116
            if (b >= 1)
 
117
                b--;
 
118
 
 
119
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
120
            mvprintw(7 + editline, b, "");
 
121
            refreshp();
 
122
 
 
123
        } else if (j == 154) {
 
124
            if (b < 79) {
 
125
                b++;
 
126
            }
 
127
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
128
            mvprintw(7 + editline, b, "");
 
129
            refreshp();
 
130
 
 
131
        } else if ((j == 160) && (b >= 0) && (b < 28)) {        // insert
 
132
 
 
133
            for (k = 28; k > b; k--)
 
134
                logline_edit[editline][k] = logline_edit[editline][k - 1];
 
135
            logline_edit[editline][b] = ' ';
 
136
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
137
            mvprintw(7 + editline, b, "");
 
138
            refreshp();
 
139
 
 
140
        } else if ((j == 160) && (b >= 29) && (b < 39)) {       // insert  call
 
141
            for (k = 39; k > b; k--)
 
142
                logline_edit[editline][k] = logline_edit[editline][k - 1];
 
143
            logline_edit[editline][b] = ' ';
 
144
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
145
            mvprintw(7 + editline, b, "");
 
146
            refreshp();
 
147
 
 
148
        } else if ((j == 160) && (b >= 54) && (b < 64)) {       // insert
 
149
 
 
150
            for (k = 64; k > b; k--)
 
151
                logline_edit[editline][k] = logline_edit[editline][k - 1];
 
152
            logline_edit[editline][b] = ' ';
 
153
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
154
            mvprintw(7 + editline, b, "");
 
155
            refreshp();
 
156
 
 
157
        } else if ((j == 160) && (b >= 68) && (b < 76)) {       // insert
 
158
 
 
159
            for (k = 76; k > b; k--)
 
160
                logline_edit[editline][k] = logline_edit[editline][k - 1];
 
161
            logline_edit[editline][b] = ' ';
 
162
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
163
            mvprintw(7 + editline, b, "");
 
164
            refreshp();
 
165
 
 
166
        } else if ((j == 161) && (b >= 1) && (b < 28)) {        // delete
 
167
 
 
168
            for (k = b; k < 28; k++)
 
169
                logline_edit[editline][k] = logline_edit[editline][k + 1];
 
170
 
 
171
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
172
            mvprintw(7 + editline, b, "");
 
173
            refreshp();
 
174
 
 
175
        } else if ((j == 161) && (b >= 29) && (b < 39)) {       // delete
 
176
 
 
177
            for (k = b; k < 39; k++)
 
178
                logline_edit[editline][k] = logline_edit[editline][k + 1];
 
179
 
 
180
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
181
            mvprintw(7 + editline, b, "");
 
182
            refreshp();
 
183
 
 
184
        } else if ((j == 161) && (b >= 68) && (b < 76)) {       // delete
 
185
 
 
186
            for (k = b; k < 76; k++)
 
187
                logline_edit[editline][k] = logline_edit[editline][k + 1];
 
188
 
 
189
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
190
            mvprintw(7 + editline, b, "");
 
191
            refreshp();
 
192
 
 
193
        } else if ((j == 161) && (b >= 54) && (b < 64)) {       // delete
 
194
 
 
195
            for (k = b; k < 64; k++)
 
196
                logline_edit[editline][k] = logline_edit[editline][k + 1];
 
197
 
 
198
            mvprintw(7 + editline, 0, logline_edit[editline]);
 
199
            mvprintw(7 + editline, b, "");
 
200
            refreshp();
 
201
 
 
202
        } else if (j != 27) {
 
203
 
 
204
            if ((j >= 97) && (j <= 122))
 
205
                j = j - 32;
 
206
            if ((j >= 32) && (j < 97)) {
 
207
                logline_edit[editline][b] = j;
 
208
                mvprintw(7 + editline, 0, logline_edit[editline]);
 
209
                if ((b < strlen(logline_edit[editline]) - 2) && (b < 80))
 
210
                    b++;
 
211
                mvprintw(7 + editline, b, "");
 
212
            }
 
213
        }
 
214
 
 
215
    }
 
216
 
 
217
    attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT);
 
218
 
 
219
    mvprintw(7 + editline, 0, logline_edit[editline]);
 
220
    refreshp();
 
221
 
 
222
    if ((lfile = open(logfile, O_RDWR)) < 0) {
 
223
 
 
224
        mvprintw(24, 0, "I can not find the logfile...");
 
225
        refreshp();
 
226
        sleep(2);
 
227
    } else {
 
228
 
 
229
        for (ii = 4; ii >= 0; ii--) {
 
230
 
 
231
            fstat(lfile, &statbuf);
 
232
 
 
233
            if (statbuf.st_size > 80) {
 
234
                rc = ftruncate(lfile, statbuf.st_size - 81);
 
235
                nr_qsos--;
 
236
                qsos[nr_qsos][0] = '\0';
 
237
                fsync(lfile);
 
238
 
 
239
            } else
 
240
                break;
 
241
 
 
242
        }
 
243
 
 
244
    }
 
245
 
 
246
    close(lfile);
 
247
 
 
248
    ii++;
 
249
 
 
250
    while (ii < 5) {
 
251
        store_qso(logline_edit[ii]);
248
252
        ii++;
249
 
 
250
 
        while (ii < 5) {
251
 
                store_qso(logline_edit[ii]);
252
 
                ii++;
253
 
        }
254
 
 
255
 
 
256
 
        scroll_log();
257
 
 
258
 
        stop_backgrnd_process = 0;
259
 
 
260
 
        return(0);
 
253
    }
 
254
 
 
255
    scroll_log();
 
256
 
 
257
    stop_backgrnd_process = 0;
 
258
 
 
259
    return (0);
261
260
}
262
 
 
263