Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/yabause/src/gtk/menu.c
2 views
1
/* Copyright 2006 Guillaume Duhamel
2
Copyright 2006 Fabien Coulon
3
4
This file is part of Yabause.
5
6
Yabause 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
Yabause 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 Yabause; if not, write to the Free Software
18
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#include "settings.h"
22
#include "yuiwindow.h"
23
#include "yuivdp1.h"
24
#include "yuivdp2.h"
25
#include "yuish.h"
26
#include "yuitransfer.h"
27
#include "yuim68k.h"
28
#include "yuiscudsp.h"
29
#include "yuiscsp.h"
30
#include "yuimem.h"
31
#include "yuiscreenshot.h"
32
33
static void openAboutDialog(GtkWidget * w, gpointer data) {
34
gtk_show_about_dialog(data,
35
"name", "Yabause",
36
"version", VERSION,
37
"website", "http://yabause.org",
38
NULL);
39
}
40
41
void YuiSaveState(void) {
42
char * dir = g_key_file_get_value(keyfile, "General", "StatePath", NULL);
43
44
YabSaveStateSlot(dir, 1);
45
}
46
47
void YuiLoadState(void) {
48
char * dir = g_key_file_get_value(keyfile, "General", "StatePath", NULL);
49
50
YabLoadStateSlot(dir, 1);
51
}
52
53
GtkWidget* create_menu(YuiWindow * window1) {
54
GtkWidget *menubar1;
55
GtkWidget *menuitem1;
56
GtkWidget *menuitem1_menu;
57
GtkWidget *new1;
58
GtkWidget *view1;
59
GtkWidget *view1_menu;
60
GtkWidget *fps1;
61
GtkWidget *frameLimiter;
62
GtkWidget *layer1;
63
GtkWidget *layer1_menu;
64
GtkWidget *log;
65
GtkWidget *menuitem3;
66
GtkWidget *menuitem3_menu;
67
GtkWidget *msh;
68
GtkWidget *ssh;
69
GtkWidget *vdp2;
70
GtkWidget *vdp1;
71
GtkWidget *m68k;
72
GtkWidget *scudsp;
73
GtkWidget *scsp;
74
GtkWidget *menuitem4;
75
GtkWidget *menuitem4_menu;
76
GtkWidget *about1;
77
GtkWidget *transfer;
78
GtkWidget *memory;
79
GtkWidget *screenshot;
80
81
menubar1 = gtk_menu_bar_new ();
82
83
menuitem1 = gtk_menu_item_new_with_mnemonic ("_Yabause");
84
gtk_container_add (GTK_CONTAINER (menubar1), menuitem1);
85
86
menuitem1_menu = gtk_menu_new ();
87
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menuitem1_menu);
88
89
new1 = gtk_image_menu_item_new_from_stock("gtk-preferences", NULL);
90
g_signal_connect(new1, "activate", yui_conf, 0);
91
gtk_container_add (GTK_CONTAINER (menuitem1_menu), new1);
92
93
gtk_container_add(GTK_CONTAINER(menuitem1_menu), gtk_action_create_menu_item(gtk_action_group_get_action(window1->action_group, "run")));
94
gtk_container_add(GTK_CONTAINER(menuitem1_menu), gtk_action_create_menu_item(gtk_action_group_get_action(window1->action_group, "pause")));
95
gtk_container_add(GTK_CONTAINER(menuitem1_menu), gtk_action_create_menu_item(gtk_action_group_get_action(window1->action_group, "reset")));
96
97
transfer = gtk_menu_item_new_with_mnemonic (_("Transfer"));
98
gtk_container_add (GTK_CONTAINER (menuitem1_menu), transfer);
99
g_signal_connect_swapped(transfer, "activate", G_CALLBACK(yui_transfer_new), window1);
100
101
screenshot = gtk_menu_item_new_with_mnemonic (_("Screenshot"));
102
gtk_container_add (GTK_CONTAINER (menuitem1_menu), screenshot);
103
g_signal_connect_swapped(screenshot, "activate", G_CALLBACK(yui_screenshot_new), window1);
104
105
frameLimiter = gtk_check_menu_item_new_with_mnemonic (_("Frame Skip/Limiter"));
106
{
107
GtkAction * action = gtk_action_group_get_action(window1->action_group, "frameskip");
108
gtk_action_connect_proxy(action, frameLimiter);
109
}
110
gtk_container_add (GTK_CONTAINER (menuitem1_menu), frameLimiter);
111
112
{
113
GtkWidget * savestate_menu;
114
GtkWidget * savestate;
115
GtkWidget * savestate_save;
116
GtkWidget * savestate_load;
117
118
savestate = gtk_menu_item_new_with_mnemonic(_("Save State"));
119
gtk_container_add(GTK_CONTAINER(menuitem1_menu), savestate);
120
121
savestate_menu = gtk_menu_new();
122
gtk_menu_item_set_submenu(GTK_MENU_ITEM(savestate), savestate_menu);
123
124
savestate_save = gtk_menu_item_new_with_mnemonic(_("Save"));
125
gtk_container_add(GTK_CONTAINER(savestate_menu), savestate_save);
126
g_signal_connect_swapped(savestate_save, "activate", G_CALLBACK(YuiSaveState), NULL);
127
128
savestate_load = gtk_menu_item_new_with_mnemonic(_("Load"));
129
gtk_container_add(GTK_CONTAINER(savestate_menu), savestate_load);
130
g_signal_connect_swapped(savestate_load, "activate", G_CALLBACK(YuiLoadState), NULL);
131
}
132
133
gtk_container_add (GTK_CONTAINER (menuitem1_menu), gtk_separator_menu_item_new ());
134
135
gtk_container_add(GTK_CONTAINER(menuitem1_menu), gtk_action_create_menu_item(gtk_action_group_get_action(window1->action_group, "quit")));
136
137
view1 = gtk_menu_item_new_with_mnemonic (_("_View"));
138
gtk_container_add (GTK_CONTAINER (menubar1), view1);
139
140
view1_menu = gtk_menu_new ();
141
gtk_menu_item_set_submenu (GTK_MENU_ITEM (view1), view1_menu);
142
143
fps1 = gtk_check_menu_item_new_with_mnemonic (_("FPS"));
144
g_signal_connect(fps1, "activate", G_CALLBACK(ToggleFPS), NULL);
145
gtk_container_add (GTK_CONTAINER (view1_menu), fps1);
146
147
layer1 = gtk_menu_item_new_with_mnemonic (_("Layer"));
148
gtk_container_add (GTK_CONTAINER (view1_menu), layer1);
149
150
layer1_menu = gtk_menu_new ();
151
gtk_menu_item_set_submenu (GTK_MENU_ITEM (layer1), layer1_menu);
152
153
gtk_container_add(GTK_CONTAINER(layer1_menu), gtk_action_create_menu_item(gtk_action_group_get_action(window1->action_group, "toggle_vdp1")));
154
gtk_container_add(GTK_CONTAINER(layer1_menu), gtk_action_create_menu_item(gtk_action_group_get_action(window1->action_group, "toggle_nbg0")));
155
gtk_container_add(GTK_CONTAINER(layer1_menu), gtk_action_create_menu_item(gtk_action_group_get_action(window1->action_group, "toggle_nbg1")));
156
gtk_container_add(GTK_CONTAINER(layer1_menu), gtk_action_create_menu_item(gtk_action_group_get_action(window1->action_group, "toggle_nbg2")));
157
gtk_container_add(GTK_CONTAINER(layer1_menu), gtk_action_create_menu_item(gtk_action_group_get_action(window1->action_group, "toggle_nbg3")));
158
gtk_container_add(GTK_CONTAINER(layer1_menu), gtk_action_create_menu_item(gtk_action_group_get_action(window1->action_group, "toggle_rbg0")));
159
160
gtk_container_add(GTK_CONTAINER(view1_menu), gtk_action_create_menu_item(gtk_action_group_get_action(window1->action_group, "fullscreen")));
161
162
log = gtk_menu_item_new_with_mnemonic (_("Log"));
163
g_signal_connect_swapped(log, "activate", G_CALLBACK(yui_window_show_log), window1);
164
gtk_container_add(GTK_CONTAINER(view1_menu), log);
165
166
menuitem3 = gtk_menu_item_new_with_mnemonic (_("_Debug"));
167
gtk_container_add (GTK_CONTAINER (menubar1), menuitem3);
168
169
menuitem3_menu = gtk_menu_new ();
170
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem3), menuitem3_menu);
171
172
msh = gtk_menu_item_new_with_mnemonic ("MSH2");
173
gtk_container_add (GTK_CONTAINER (menuitem3_menu), msh);
174
g_signal_connect_swapped(msh, "activate", G_CALLBACK(yui_msh_new), window1);
175
176
ssh = gtk_menu_item_new_with_mnemonic ("SSH2");
177
gtk_container_add (GTK_CONTAINER (menuitem3_menu), ssh);
178
g_signal_connect_swapped(ssh, "activate", G_CALLBACK(yui_ssh_new), window1);
179
180
vdp2 = gtk_menu_item_new_with_mnemonic ("Vdp1");
181
gtk_container_add (GTK_CONTAINER (menuitem3_menu), vdp2);
182
g_signal_connect_swapped(vdp2, "activate", G_CALLBACK(yui_vdp1_new), window1);
183
184
vdp1 = gtk_menu_item_new_with_mnemonic ("Vdp2");
185
gtk_container_add (GTK_CONTAINER (menuitem3_menu), vdp1);
186
g_signal_connect_swapped(vdp1, "activate", G_CALLBACK(yui_vdp2_new), window1);
187
188
m68k = gtk_menu_item_new_with_mnemonic ("M68K");
189
gtk_container_add (GTK_CONTAINER (menuitem3_menu), m68k);
190
g_signal_connect_swapped(m68k, "activate", G_CALLBACK(yui_m68k_new), window1);
191
192
scudsp = gtk_menu_item_new_with_mnemonic ("SCU-DSP");
193
gtk_container_add (GTK_CONTAINER (menuitem3_menu), scudsp);
194
g_signal_connect_swapped(scudsp, "activate", G_CALLBACK(yui_scudsp_new), window1);
195
196
scsp = gtk_menu_item_new_with_mnemonic ("SCSP");
197
gtk_container_add (GTK_CONTAINER (menuitem3_menu), scsp);
198
g_signal_connect_swapped(scsp, "activate", G_CALLBACK(yui_scsp_new), window1);
199
200
gtk_container_add (GTK_CONTAINER (menuitem3_menu), gtk_separator_menu_item_new ());
201
202
memory = gtk_menu_item_new_with_mnemonic (_("Memory dump"));
203
gtk_container_add (GTK_CONTAINER (menuitem3_menu), memory);
204
g_signal_connect_swapped(memory, "activate", G_CALLBACK(yui_mem_new), window1);
205
206
menuitem4 = gtk_menu_item_new_with_mnemonic (_("_Help"));
207
gtk_container_add (GTK_CONTAINER (menubar1), menuitem4);
208
209
menuitem4_menu = gtk_menu_new ();
210
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menuitem4_menu);
211
212
about1 = gtk_image_menu_item_new_from_stock ("gtk-about", NULL);
213
gtk_container_add (GTK_CONTAINER (menuitem4_menu), about1);
214
g_signal_connect(about1, "activate", G_CALLBACK(openAboutDialog), window1);
215
216
return menubar1;
217
}
218
219
220