Mempak open
This commit is contained in:
parent
dd2ec8f71e
commit
ba93485172
|
@ -87,6 +87,17 @@ Author: Raphaël Assénat
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="stock">gtk-missing-image</property>
|
<property name="stock">gtk-missing-image</property>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="GtkFileFilter" id="n64_mempak_filter">
|
||||||
|
<patterns>
|
||||||
|
<pattern>*.mpk</pattern>
|
||||||
|
<pattern>*.n64</pattern>
|
||||||
|
</patterns>
|
||||||
|
</object>
|
||||||
|
<object class="GtkFileFilter" id="n64_note_filter">
|
||||||
|
<patterns>
|
||||||
|
<pattern>*.note</pattern>
|
||||||
|
</patterns>
|
||||||
|
</object>
|
||||||
<object class="GtkListStore" id="n64_notes">
|
<object class="GtkListStore" id="n64_notes">
|
||||||
<columns>
|
<columns>
|
||||||
<!-- column-name Note -->
|
<!-- column-name Note -->
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#define GET_ELEMENT(TYPE, ELEMENT) (TYPE *)gtk_builder_get_object(app->builder, #ELEMENT)
|
#define GET_ELEMENT(TYPE, ELEMENT) (TYPE *)gtk_builder_get_object(app->builder, #ELEMENT)
|
||||||
#define GET_UI_ELEMENT(TYPE, ELEMENT) TYPE *ELEMENT = GET_ELEMENT(TYPE, ELEMENT)
|
#define GET_UI_ELEMENT(TYPE, ELEMENT) TYPE *ELEMENT = GET_ELEMENT(TYPE, ELEMENT)
|
||||||
|
|
||||||
|
void errorPopop(struct application *app, const char *message);
|
||||||
|
|
||||||
struct application {
|
struct application {
|
||||||
GtkBuilder *builder;
|
GtkBuilder *builder;
|
||||||
GtkWindow *mainwindow;
|
GtkWindow *mainwindow;
|
||||||
|
|
|
@ -19,9 +19,11 @@ struct mpkedit_data *mpkedit_new(struct application *app)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// mpke->mpk = mempak_new();
|
mpke->mpk = mempak_new();
|
||||||
mpke->mpk = mempak_loadFromFile("/home/raph/0Dream/programming/multiuse_pcbX/gc_n64_usb-v3/tmp/perfect_dark_b.N64");
|
if (!mpke->mpk) {
|
||||||
|
free(mpke);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return mpke;
|
return mpke;
|
||||||
}
|
}
|
||||||
|
@ -33,6 +35,16 @@ void mpkedit_free(struct mpkedit_data *mpke)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mpke_replaceMpk(struct application *app, mempak_structure_t *mpk)
|
||||||
|
{
|
||||||
|
if (app->mpke->mpk) {
|
||||||
|
mempak_free(app->mpke->mpk);
|
||||||
|
}
|
||||||
|
|
||||||
|
app->mpke->mpk = mpk;
|
||||||
|
mpke_syncModel(app);
|
||||||
|
}
|
||||||
|
|
||||||
void mpke_syncModel(struct application *app)
|
void mpke_syncModel(struct application *app)
|
||||||
{
|
{
|
||||||
GET_UI_ELEMENT(GtkListStore, n64_notes);
|
GET_UI_ELEMENT(GtkListStore, n64_notes);
|
||||||
|
@ -78,14 +90,44 @@ G_MODULE_EXPORT void mpke_new(GtkWidget *win, gpointer data)
|
||||||
{
|
{
|
||||||
struct application *app = data;
|
struct application *app = data;
|
||||||
|
|
||||||
mempak_free(app->mpke->mpk);
|
mpke_replaceMpk(app, mempak_new());
|
||||||
app->mpke->mpk = mempak_new();
|
|
||||||
|
|
||||||
mpke_syncModel(app);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
G_MODULE_EXPORT void mpke_open(GtkWidget *win, gpointer data)
|
G_MODULE_EXPORT void mpke_open(GtkWidget *win, gpointer data)
|
||||||
{
|
{
|
||||||
|
struct application *app = data;
|
||||||
|
GtkWidget *dialog;
|
||||||
|
GET_UI_ELEMENT(GtkWindow, n64_mempak_window_editor);
|
||||||
|
GET_UI_ELEMENT(GtkFileFilter, n64_mempak_filter);
|
||||||
|
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
|
||||||
|
int res;
|
||||||
|
|
||||||
|
dialog = gtk_file_chooser_dialog_new("Load N64 mempak image",
|
||||||
|
n64_mempak_window_editor,
|
||||||
|
action,
|
||||||
|
"_Cancel",
|
||||||
|
GTK_RESPONSE_CANCEL,
|
||||||
|
"_Open",
|
||||||
|
GTK_RESPONSE_ACCEPT,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), n64_mempak_filter);
|
||||||
|
res = gtk_dialog_run (GTK_DIALOG(dialog));
|
||||||
|
if (res == GTK_RESPONSE_ACCEPT) {
|
||||||
|
char *filename;
|
||||||
|
GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog);
|
||||||
|
mempak_structure_t *mpk;
|
||||||
|
|
||||||
|
filename = gtk_file_chooser_get_filename(chooser);
|
||||||
|
mpk = mempak_loadFromFile(filename);
|
||||||
|
if (mpk) {
|
||||||
|
mpke_replaceMpk(app, mpk);
|
||||||
|
} else {
|
||||||
|
errorPopop(app, "Failed to load mempak");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_widget_destroy(dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
G_MODULE_EXPORT void mpke_saveas(GtkWidget *win, gpointer data)
|
G_MODULE_EXPORT void mpke_saveas(GtkWidget *win, gpointer data)
|
||||||
|
|
Loading…
Reference in New Issue