diff --git a/source/tycho/bindings.json b/source/tycho/bindings.json index 1926fd2..2d97dfa 100644 --- a/source/tycho/bindings.json +++ b/source/tycho/bindings.json @@ -8,6 +8,16 @@ "objects": { "Project": { "type": "Object", + "functions": { + "open": { + "return": "void", + "mut": true, + "arguments": [{ + "name": "fname", + "type": "QString" + }] + } + }, "properties": { }, "itemProperties": { diff --git a/source/tycho/cc_headers/mapprops.h b/source/tycho/cc_headers/mapprops.h index 1d36eb0..12d12d7 100644 --- a/source/tycho/cc_headers/mapprops.h +++ b/source/tycho/cc_headers/mapprops.h @@ -1,7 +1,6 @@ #pragma once #include -#include namespace Ui { @@ -17,7 +16,7 @@ public: ~MapProps(); private: - std::unique_ptr ui; + QSharedPointer ui; }; // EOF diff --git a/source/tycho/cc_headers/menu.h b/source/tycho/cc_headers/menu.h index a6227cf..20a7eff 100644 --- a/source/tycho/cc_headers/menu.h +++ b/source/tycho/cc_headers/menu.h @@ -1,7 +1,9 @@ #pragma once #include -#include +#include + +class Project; namespace Ui { @@ -23,7 +25,8 @@ public slots: void openMapProperties(); private: - std::unique_ptr ui; + QSharedPointer ui; + std::vector> projects; }; // EOF diff --git a/source/tycho/cc_source/mapprops.cc b/source/tycho/cc_source/mapprops.cc index fe6441c..41cc735 100644 --- a/source/tycho/cc_source/mapprops.cc +++ b/source/tycho/cc_source/mapprops.cc @@ -7,6 +7,7 @@ MapProps::MapProps(QWidget *parent) : ui(new Ui::MapProps) { ui->setupUi(this); + dbgPrintFunc(); } MapProps::~MapProps() diff --git a/source/tycho/cc_source/menu.cc b/source/tycho/cc_source/menu.cc index 4044bca..64e00fa 100644 --- a/source/tycho/cc_source/menu.cc +++ b/source/tycho/cc_source/menu.cc @@ -8,13 +8,12 @@ #include #include -extern "C" void Ma_test_fn(char const *fname); - Menu::Menu(QWidget *parent) : QMainWindow(parent), ui(new Ui::Menu) { ui->setupUi(this); + dbgPrintFunc(); } Menu::~Menu() @@ -24,7 +23,7 @@ Menu::~Menu() void Menu::mapNew() { - Project obj{this}; + auto proj = projects.emplace_back(new Project); } void Menu::mapOpen() @@ -36,7 +35,8 @@ void Menu::mapOpen() QString(), tr("Marathon Map files (*.scen *.sceA Map)")); - Ma_test_fn(qUtf8Printable(fname)); + auto proj = projects.emplace_back(new Project); + proj->open(fname); } void Menu::openAbout() diff --git a/source/tycho/source/main.rs b/source/tycho/source/main.rs index feb5954..1e85595 100644 --- a/source/tycho/source/main.rs +++ b/source/tycho/source/main.rs @@ -7,13 +7,6 @@ extern "C" { fn main_cc(app_name: *mut ffi::c_char); } -#[no_mangle] -unsafe extern "C" fn Ma_test_fn(fname: *const ffi::c_char) -{ - let fname = ffi::CStr::from_ptr(fname); - println!("hello, world! from rust: {}", fname.to_str().unwrap()); -} - fn main() -> ResultS<()> { println!("rust entry"); diff --git a/source/tycho/source/qimpl.rs b/source/tycho/source/qimpl.rs index ee53413..977addb 100644 --- a/source/tycho/source/qimpl.rs +++ b/source/tycho/source/qimpl.rs @@ -9,7 +9,7 @@ impl Drop for Project { fn drop(&mut self) { - println!("drop Project"); + eprintln!("drop Project"); } } @@ -17,7 +17,7 @@ impl ProjectTrait for Project { fn new(emit: ProjectEmitter) -> Project { - println!("new Project"); + eprintln!("new Project"); Project{emit} } @@ -25,6 +25,11 @@ impl ProjectTrait for Project { &mut self.emit } + + fn open(&mut self, fname: String) + { + println!("opening project: {}", fname); + } } // EOF