~ubuntu-branches/ubuntu/raring/vice/raring

« back to all changes in this revision

Viewing changes to src/arch/unix/gui/vsidui.c

  • Committer: Bazaar Package Importer
  • Author(s): Laszlo Boszormenyi (GCS)
  • Date: 2009-03-31 00:37:15 UTC
  • mfrom: (1.1.7 upstream) (9.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20090331003715-i5yisvcfv7mgz3eh
Tags: 2.1.dfsg-1
* New major upstream release (closes: #495937).
* Add desktop files (closes: #501181).

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
#include "uicommands.h"
47
47
#include "uimenu.h"
48
48
#include "uisettings.h"
 
49
#include "uisid.h"
49
50
#include "uisound.h"
50
51
#include "videoarch.h"
51
52
#include "vsync.h"
52
53
#include "vsidui.h"
53
54
#include "vsiduiunix.h"
54
 
#include "x11/x11ui.h"
55
 
 
56
55
 
57
56
extern struct ui_menu_entry_s sid_submenu[];
58
57
 
 
58
/* FIXME: sid menus need to be handled differently, but still need to 
 
59
   figure out the right way. */
 
60
 
 
61
#if 0
 
62
UI_MENU_DEFINE_RADIO(SidStereoAddressStart)
 
63
 
 
64
static ui_menu_entry_t set_sid_stereo_address_d4xx_submenu[] = {
 
65
    { "*$D420", (ui_callback_t)radio_SidStereoAddressStart,
 
66
      (ui_callback_data_t)0xd420, NULL },
 
67
    { "*$D440", (ui_callback_t)radio_SidStereoAddressStart,
 
68
      (ui_callback_data_t)0xd440, NULL },
 
69
    { "*$D460", (ui_callback_t)radio_SidStereoAddressStart,
 
70
      (ui_callback_data_t)0xd460, NULL },
 
71
    { "*$D480", (ui_callback_t)radio_SidStereoAddressStart,
 
72
      (ui_callback_data_t)0xd480, NULL },
 
73
    { "*$D4A0", (ui_callback_t)radio_SidStereoAddressStart,
 
74
      (ui_callback_data_t)0xd4a0, NULL },
 
75
    { "*$D4C0", (ui_callback_t)radio_SidStereoAddressStart,
 
76
      (ui_callback_data_t)0xd4c0, NULL },
 
77
    { "*$D4E0", (ui_callback_t)radio_SidStereoAddressStart,
 
78
      (ui_callback_data_t)0xd4e0, NULL },
 
79
    { NULL }
 
80
};
 
81
 
 
82
static ui_menu_entry_t set_sid_stereo_address_d5xx_submenu[] = {
 
83
    { "*$D500", (ui_callback_t)radio_SidStereoAddressStart,
 
84
      (ui_callback_data_t)0xd500, NULL },
 
85
    { "*$D520", (ui_callback_t)radio_SidStereoAddressStart,
 
86
      (ui_callback_data_t)0xd520, NULL },
 
87
    { "*$D540", (ui_callback_t)radio_SidStereoAddressStart,
 
88
      (ui_callback_data_t)0xd540, NULL },
 
89
    { "*$D560", (ui_callback_t)radio_SidStereoAddressStart,
 
90
      (ui_callback_data_t)0xd560, NULL },
 
91
    { "*$D580", (ui_callback_t)radio_SidStereoAddressStart,
 
92
      (ui_callback_data_t)0xd580, NULL },
 
93
    { "*$D5A0", (ui_callback_t)radio_SidStereoAddressStart,
 
94
      (ui_callback_data_t)0xd5a0, NULL },
 
95
    { "*$D5C0", (ui_callback_t)radio_SidStereoAddressStart,
 
96
      (ui_callback_data_t)0xd5c0, NULL },
 
97
    { "*$D5E0", (ui_callback_t)radio_SidStereoAddressStart,
 
98
      (ui_callback_data_t)0xd5e0, NULL },
 
99
    { NULL }
 
100
};
 
101
 
 
102
static ui_menu_entry_t set_sid_stereo_address_d6xx_submenu[] = {
 
103
    { "*$D600", (ui_callback_t)radio_SidStereoAddressStart,
 
104
      (ui_callback_data_t)0xd600, NULL },
 
105
    { "*$D620", (ui_callback_t)radio_SidStereoAddressStart,
 
106
      (ui_callback_data_t)0xd620, NULL },
 
107
    { "*$D640", (ui_callback_t)radio_SidStereoAddressStart,
 
108
      (ui_callback_data_t)0xd640, NULL },
 
109
    { "*$D660", (ui_callback_t)radio_SidStereoAddressStart,
 
110
      (ui_callback_data_t)0xd660, NULL },
 
111
    { "*$D680", (ui_callback_t)radio_SidStereoAddressStart,
 
112
      (ui_callback_data_t)0xd680, NULL },
 
113
    { "*$D6A0", (ui_callback_t)radio_SidStereoAddressStart,
 
114
      (ui_callback_data_t)0xd6a0, NULL },
 
115
    { "*$D6C0", (ui_callback_t)radio_SidStereoAddressStart,
 
116
      (ui_callback_data_t)0xd6c0, NULL },
 
117
    { "*$D6E0", (ui_callback_t)radio_SidStereoAddressStart,
 
118
      (ui_callback_data_t)0xd6e0, NULL },
 
119
    { NULL }
 
120
};
 
121
 
 
122
static ui_menu_entry_t set_sid_stereo_address_d7xx_submenu[] = {
 
123
    { "*$D700", (ui_callback_t)radio_SidStereoAddressStart,
 
124
      (ui_callback_data_t)0xd700, NULL },
 
125
    { "*$D720", (ui_callback_t)radio_SidStereoAddressStart,
 
126
      (ui_callback_data_t)0xd720, NULL },
 
127
    { "*$D740", (ui_callback_t)radio_SidStereoAddressStart,
 
128
      (ui_callback_data_t)0xd740, NULL },
 
129
    { "*$D760", (ui_callback_t)radio_SidStereoAddressStart,
 
130
      (ui_callback_data_t)0xd760, NULL },
 
131
    { "*$D780", (ui_callback_t)radio_SidStereoAddressStart,
 
132
      (ui_callback_data_t)0xd780, NULL },
 
133
    { "*$D7A0", (ui_callback_t)radio_SidStereoAddressStart,
 
134
      (ui_callback_data_t)0xd7a0, NULL },
 
135
    { "*$D7C0", (ui_callback_t)radio_SidStereoAddressStart,
 
136
      (ui_callback_data_t)0xd7c0, NULL },
 
137
    { "*$D7E0", (ui_callback_t)radio_SidStereoAddressStart,
 
138
      (ui_callback_data_t)0xd7e0, NULL },
 
139
    { NULL }
 
140
};
 
141
 
 
142
static ui_menu_entry_t set_sid_stereo_address_dexx_submenu[] = {
 
143
    { "*$DE00", (ui_callback_t)radio_SidStereoAddressStart,
 
144
      (ui_callback_data_t)0xde00, NULL },
 
145
    { "*$DE20", (ui_callback_t)radio_SidStereoAddressStart,
 
146
      (ui_callback_data_t)0xde20, NULL },
 
147
    { "*$DE40", (ui_callback_t)radio_SidStereoAddressStart,
 
148
      (ui_callback_data_t)0xde40, NULL },
 
149
    { "*$DE60", (ui_callback_t)radio_SidStereoAddressStart,
 
150
      (ui_callback_data_t)0xde60, NULL },
 
151
    { "*$DE80", (ui_callback_t)radio_SidStereoAddressStart,
 
152
      (ui_callback_data_t)0xde80, NULL },
 
153
    { "*$DEA0", (ui_callback_t)radio_SidStereoAddressStart,
 
154
      (ui_callback_data_t)0xdea0, NULL },
 
155
    { "*$DEC0", (ui_callback_t)radio_SidStereoAddressStart,
 
156
      (ui_callback_data_t)0xdec0, NULL },
 
157
    { "*$DEE0", (ui_callback_t)radio_SidStereoAddressStart,
 
158
      (ui_callback_data_t)0xdee0, NULL },
 
159
    { NULL }
 
160
};
 
161
 
 
162
static ui_menu_entry_t set_sid_stereo_address_dfxx_submenu[] = {
 
163
    { "*$DF00", (ui_callback_t)radio_SidStereoAddressStart,
 
164
      (ui_callback_data_t)0xdf00, NULL },
 
165
    { "*$DF20", (ui_callback_t)radio_SidStereoAddressStart,
 
166
      (ui_callback_data_t)0xdf20, NULL },
 
167
    { "*$DF40", (ui_callback_t)radio_SidStereoAddressStart,
 
168
      (ui_callback_data_t)0xdf40, NULL },
 
169
    { "*$DF60", (ui_callback_t)radio_SidStereoAddressStart,
 
170
      (ui_callback_data_t)0xdf60, NULL },
 
171
    { "*$DF80", (ui_callback_t)radio_SidStereoAddressStart,
 
172
      (ui_callback_data_t)0xdf80, NULL },
 
173
    { "*$DFA0", (ui_callback_t)radio_SidStereoAddressStart,
 
174
      (ui_callback_data_t)0xdfa0, NULL },
 
175
    { "*$DFC0", (ui_callback_t)radio_SidStereoAddressStart,
 
176
      (ui_callback_data_t)0xdfc0, NULL },
 
177
    { "*$DFE0", (ui_callback_t)radio_SidStereoAddressStart,
 
178
      (ui_callback_data_t)0xdfe0, NULL },
 
179
    { NULL }
 
180
};
 
181
 
 
182
static ui_menu_entry_t set_sid_stereo_address_submenu[] = {
 
183
    { "$D4xx",
 
184
      NULL, NULL, set_sid_stereo_address_d4xx_submenu },
 
185
    { "$D5xx",
 
186
      NULL, NULL, set_sid_stereo_address_d5xx_submenu },
 
187
    { "$D6xx",
 
188
      NULL, NULL, set_sid_stereo_address_d6xx_submenu },
 
189
    { "$D7xx",
 
190
      NULL, NULL, set_sid_stereo_address_d7xx_submenu },
 
191
    { "$DExx",
 
192
      NULL, NULL, set_sid_stereo_address_dexx_submenu },
 
193
    { "$DFxx",
 
194
      NULL, NULL, set_sid_stereo_address_dfxx_submenu },
 
195
    { NULL }
 
196
};
 
197
 
 
198
UI_MENU_DEFINE_TOGGLE(SidStereo)
 
199
UI_MENU_DEFINE_TOGGLE(SidFilters)
 
200
 
 
201
ui_menu_entry_t sid_submenu[] = {
 
202
    { N_("SID engine"),
 
203
      NULL, NULL, sid_engine_submenu },
 
204
    { "--" },
 
205
    { N_("*Second SID"),
 
206
      (ui_callback_t)toggle_SidStereo, NULL, NULL },
 
207
    { N_("*Second SID base address"),
 
208
      NULL, NULL, set_sid_stereo_address_submenu },
 
209
    { "--" },
 
210
    { N_("*Emulate filters"),
 
211
      (ui_callback_t)toggle_SidFilters, NULL, NULL },
 
212
    { N_("Chip model"),
 
213
      NULL, NULL, sid_model_submenu },
 
214
#ifdef HAVE_RESID
 
215
    { "--" },
 
216
    { N_("reSID sampling method"),
 
217
      NULL, NULL, sid_resid_sampling_submenu },
 
218
    { N_("reSID resampling passband..."),
 
219
      (ui_callback_t)set_sid_resid_passband, NULL, NULL },
 
220
#endif
 
221
    { NULL },
 
222
};
 
223
#endif
59
224
 
60
225
static log_t vsid_log = LOG_ERR;
61
226
static void vsid_create_menus(void);
75
240
    char *filename;
76
241
    ui_button_t button;
77
242
 
78
 
    filename = ui_select_file(_("Load PSID file"), NULL, 0, False, NULL,
79
 
                              "*.[psPS]*", &button, False, NULL);
 
243
    filename = ui_select_file(_("Load PSID file"), NULL, 0, 0, NULL,
 
244
                              "*.[psPS]*", &button, 0, NULL, UI_FC_LOAD);
80
245
 
81
246
    vsync_suspend_speed_eval();
82
247
 
83
248
    switch (button) {
84
249
      case UI_BUTTON_OK:
85
250
        if (machine_autodetect_psid(filename) < 0) {
86
 
          log_error(vsid_log, _("`%s' is not a valid PSID file."), filename);
 
251
          log_error(vsid_log, "`%s' is not a valid PSID file.", filename);
87
252
          return;
88
253
        }
89
254
        psid_init_driver();
112
277
static ui_menu_entry_t ui_load_commands_menu[] = {
113
278
  { N_("Load PSID file..."),
114
279
    (ui_callback_t)psid_load, NULL, NULL,
115
 
    XK_l, UI_HOTMOD_META },
 
280
    KEYSYM_l, UI_HOTMOD_META },
116
281
  { NULL }
117
282
};
118
283
 
203
368
  { NULL }
204
369
};
205
370
 
 
371
#ifdef USE_GNOMEUI
206
372
static ui_menu_entry_t vsidui_file_menu[] = {
207
373
  { "",
208
374
    NULL, NULL, ui_load_commands_menu },
234
400
    NULL, NULL, vsidui_settings_menu },
235
401
  { NULL }
236
402
};
 
403
#endif  /* USE_GNOMEUI */
237
404
 
238
405
/* ------------------------------------------------------------------------- */
239
406
 
242
409
static void vsid_create_menus(void)
243
410
{
244
411
    static ui_menu_entry_t tune_menu[256];
245
 
    static ui_window_t wl = NULL, wr = NULL;
246
412
    static int tunes = 0;
247
413
    int default_tune;
248
414
    int i;
267
433
        tune_menu[i].callback_data =
268
434
            (ui_callback_data_t) i;
269
435
        tune_menu[i].sub_menu = NULL;
270
 
        tune_menu[i].hotkey_keysym = i < 10 ? XK_0 + i : 0;
 
436
        tune_menu[i].hotkey_keysym = i < 10 ? KEYSYM_0 + i : 0;
271
437
        tune_menu[i].hotkey_modifier =
272
438
            (ui_hotkey_modifier_t) i < 10 ? UI_HOTMOD_META : 0;
273
439
        lib_free(buf);
283
449
 
284
450
    num_checkmark_menu_items = 0;
285
451
 
286
 
    if (wl) {
287
 
        x11ui_destroy_widget(wl);
288
 
    }
289
 
    if (wr) {
290
 
        x11ui_destroy_widget(wr);
291
 
    }
292
 
 
293
452
    ui_set_left_menu(vsidui_left_menu);
294
453
 
295
454
    ui_set_right_menu(vsidui_right_menu);
306
465
    int res;
307
466
    video_canvas_t canvas;
308
467
 
309
 
    res = x11ui_open_canvas_window(&canvas, _("VSID: The SID Emulator"), 300, 
310
 
                                   100, 0);
 
468
    res = ui_open_canvas_window(&canvas, _("VSID: The SID Emulator"), 300, 
 
469
                                100, 0);
311
470
    if (res < 0)
312
471
        return -1;
313
472
    
314
 
    video_add_handlers(&canvas);
315
 
 
316
473
    /* FIXME: There might be a separte vsid icon.  */
317
474
    ui_set_application_icon(c64_icon_data);
318
475
 
387
544
void vsid_ui_close(void)
388
545
{
389
546
}
 
547
 
 
548
void vsid_ui_setdrv(char* driver_info_text)
 
549
{
 
550
}