Subversion Repositories svn.mios32

Rev

Rev 2516 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2516 Rev 2518
Line 276... Line 276...
276
    if(button == FP_B_MENU){
276
    if(button == FP_B_MENU){
277
        submode = 0;
277
        submode = 0;
278
        DrawMenu();
278
        DrawMenu();
279
        return;
279
        return;
280
    }
280
    }
-
 
281
    u8 dir = 0;
281
    switch(submode){
282
    switch(submode){
282
        case 0:
283
        case 0:
283
            switch(button){
284
            switch(button){
284
                case FP_B_LOAD:
285
                case FP_B_LOAD:
285
                    if(channels[selchan].program != NULL){
286
                    if(channels[selchan].program != NULL){
286
                        MIOS32_LCD_CursorSet(0,0);
287
                        MIOS32_LCD_CursorSet(0,0);
287
                        MIOS32_LCD_PrintFormattedString("Delete prog first!");
288
                        MIOS32_LCD_PrintString("Delete prog first!");
288
                    }else{
289
                    }else{
289
                        Filebrowser_Start(NULL, "PGM", 0, &FilebrowserDoneLoading);
290
                        Filebrowser_Start(NULL, "PGM", 0, &FilebrowserDoneLoading);
290
                    }
291
                    }
291
                    break;
292
                    break;
292
                case FP_B_SAVE:
293
                case FP_B_SAVE:
293
                    if(channels[selchan].program == NULL){
294
                    if(channels[selchan].program == NULL){
294
                        MIOS32_LCD_CursorSet(0,0);
295
                        MIOS32_LCD_CursorSet(0,0);
295
                        MIOS32_LCD_PrintFormattedString("No prog to save!");
296
                        MIOS32_LCD_PrintString("No prog to save!");
296
                    }else{
297
                    }else{
297
                        Filebrowser_Start(NULL, "PGM", 1, &FilebrowserDoneSaving);
298
                        Filebrowser_Start(NULL, "PGM", 1, &FilebrowserDoneSaving);
298
                    }
299
                    }
299
                    break;
300
                    break;
300
                case FP_B_NEW:
301
                case FP_B_NEW:
301
                    if(channels[selchan].program != NULL){
302
                    if(channels[selchan].program != NULL){
302
                        MIOS32_LCD_CursorSet(0,0);
303
                        MIOS32_LCD_CursorSet(0,0);
303
                        MIOS32_LCD_PrintFormattedString("Delete prog first!");
304
                        MIOS32_LCD_PrintString("Delete prog first!");
304
                    }else{
305
                    }else{
305
                        synprogram_t* prog = vgmh2_malloc(sizeof(synprogram_t));
306
                        synprogram_t* prog = vgmh2_malloc(sizeof(synprogram_t));
306
                        channels[selchan].program = prog;
307
                        channels[selchan].program = prog;
307
                        prog->usage.all = 0;
308
                        prog->usage.all = 0;
308
                        prog->initsource = NULL;
309
                        prog->initsource = NULL;
Line 321... Line 322...
321
                    SyEng_DeleteProgram(selchan);
322
                    SyEng_DeleteProgram(selchan);
322
                    DrawMenu();
323
                    DrawMenu();
323
                    break;
324
                    break;
324
                case FP_B_ENTER:
325
                case FP_B_ENTER:
325
                    EditProgram();
326
                    EditProgram();
-
 
327
                    break;
-
 
328
                case FP_B_MOVEUP:
-
 
329
                    dir = 1; //No typo--continues below
-
 
330
                case FP_B_MOVEDN:
-
 
331
                    if(channels[selchan].trackermode) return;
-
 
332
                    if(channels[selchan].program == NULL) return;
-
 
333
                    s16 i;
-
 
334
                    for(i=selchan; dir ? (i>=0) : (i<16*MBQG_NUM_PORTS); dir ? --i : ++i){
-
 
335
                        if(channels[i].trackermode) continue;
-
 
336
                        if(channels[i].program != NULL) continue;
-
 
337
                        break;
-
 
338
                    }
-
 
339
                    if(i < 0 || i >= 16*MBQG_NUM_PORTS) return; //No place for it
-
 
340
                    //Got a place to move it
-
 
341
                    SyEng_HardFlushProgram(channels[selchan].program);
-
 
342
                    vTaskSuspendAll();
-
 
343
                    u8 p;
-
 
344
                    synproginstance_t* pi;
-
 
345
                    for(p=0; p<MBQG_NUM_PROGINSTANCES; ++p){
-
 
346
                        pi = &proginstances[p];
-
 
347
                        if(pi->sourcechannel == selchan){
-
 
348
                            pi->sourcechannel = i;
-
 
349
                        }
-
 
350
                    }
-
 
351
                    channels[i].program = channels[selchan].program;
-
 
352
                    channels[selchan].program = NULL;
-
 
353
                    xTaskResumeAll();
-
 
354
                    //Turn off old channel LEDs
-
 
355
                    FrontPanel_GenesisLEDSet((selchan >> 4), 0, 1, 0);
-
 
356
                    FrontPanel_GenesisLEDSet((selchan >> 2) & 3, (selchan & 3)+8, 1, 0);
-
 
357
                    //Change to new channel
-
 
358
                    selchan = i;
-
 
359
                    //Turn on new channel LEDs
-
 
360
                    FrontPanel_GenesisLEDSet((selchan >> 4), 0, 1, 1);
-
 
361
                    FrontPanel_GenesisLEDSet((selchan >> 2) & 3, (selchan & 3)+8, 1, 1);
-
 
362
                    //Update LCD
-
 
363
                    DrawMenu();
-
 
364
                    MIOS32_LCD_CursorSet(0,0);
-
 
365
                    MIOS32_LCD_PrintFormattedString("Moved prog to Prt%d:Ch%2d  ", (selchan >> 4), (selchan & 0xF)+1);
326
                    break;
366
                    break;
327
            }
367
            }
328
            break;
368
            break;
329
    }
369
    }
330
}
370
}