Update to hiro v100r1

This commit is contained in:
Morten Delenk 2016-07-09 09:50:49 +02:00
parent 127fa784cc
commit 252f89d17e
29 changed files with 82 additions and 82 deletions

View file

@ -33,8 +33,8 @@ auto DropPathsOperation(id<NSDraggingInfo> sender) -> NSDragOperation {
return NSDragOperationNone; return NSDragOperationNone;
} }
auto DropPaths(id<NSDraggingInfo> sender) -> lstring { auto DropPaths(id<NSDraggingInfo> sender) -> string_vector {
lstring paths; string_vector paths;
NSPasteboard* pboard = [sender draggingPasteboard]; NSPasteboard* pboard = [sender draggingPasteboard];
if([[pboard types] containsObject:NSFilenamesPboardType]) { if([[pboard types] containsObject:NSFilenamesPboardType]) {
NSArray* files = [pboard propertyListForType:NSFilenamesPboardType]; NSArray* files = [pboard propertyListForType:NSFilenamesPboardType];

View file

@ -20,7 +20,7 @@
} }
-(BOOL) performDragOperation:(id<NSDraggingInfo>)sender { -(BOOL) performDragOperation:(id<NSDraggingInfo>)sender {
lstring paths = DropPaths(sender); auto paths = DropPaths(sender);
if(!paths) return NO; if(!paths) return NO;
canvas->doDrop(paths); canvas->doDrop(paths);
return YES; return YES;

View file

@ -23,7 +23,7 @@
} }
-(BOOL) performDragOperation:(id<NSDraggingInfo>)sender { -(BOOL) performDragOperation:(id<NSDraggingInfo>)sender {
lstring paths = DropPaths(sender); auto paths = DropPaths(sender);
if(!paths) return NO; if(!paths) return NO;
viewport->doDrop(paths); viewport->doDrop(paths);
return YES; return YES;
@ -53,8 +53,8 @@ auto pViewport::destruct() -> void {
} }
} }
auto pViewport::handle() const -> uintptr { auto pViewport::handle() const -> uintptr_t {
return (uintptr)cocoaViewport; return (uintptr_t)cocoaViewport;
} }
auto pViewport::setDroppable(bool droppable) -> void { auto pViewport::setDroppable(bool droppable) -> void {

View file

@ -18,7 +18,7 @@ namespace hiro {
struct pViewport : pWidget { struct pViewport : pWidget {
Declare(Viewport, Widget) Declare(Viewport, Widget)
auto handle() const -> uintptr; auto handle() const -> uintptr_t;
auto setDroppable(bool droppable) -> void; auto setDroppable(bool droppable) -> void;
CocoaViewport* cocoaViewport = nullptr; CocoaViewport* cocoaViewport = nullptr;

View file

@ -38,7 +38,7 @@
[item setTarget:self]; [item setTarget:self];
[rootMenu addItem:item]; [rootMenu addItem:item];
string result = nall::execute("defaults", "read", "/Library/Preferences/com.apple.security", "GKAutoRearm").strip(); string result = nall::execute("defaults", "read", "/Library/Preferences/com.apple.security", "GKAutoRearm").output.strip();
if(result != "0") { if(result != "0") {
disableGatekeeperAutoRearm = [[[NSMenuItem alloc] initWithTitle:@"Disable Gatekeeper Auto-Rearm" action:@selector(menuDisableGatekeeperAutoRearm) keyEquivalent:@""] autorelease]; disableGatekeeperAutoRearm = [[[NSMenuItem alloc] initWithTitle:@"Disable Gatekeeper Auto-Rearm" action:@selector(menuDisableGatekeeperAutoRearm) keyEquivalent:@""] autorelease];
[disableGatekeeperAutoRearm setTarget:self]; [disableGatekeeperAutoRearm setTarget:self];
@ -121,7 +121,7 @@
} }
-(BOOL) performDragOperation:(id<NSDraggingInfo>)sender { -(BOOL) performDragOperation:(id<NSDraggingInfo>)sender {
lstring paths = DropPaths(sender); auto paths = DropPaths(sender);
if(!paths) return NO; if(!paths) return NO;
window->doDrop(paths); window->doDrop(paths);
return YES; return YES;
@ -144,7 +144,7 @@
[alert setMessageText:@"Disable Gatekeeper Auto-Rearm"]; [alert setMessageText:@"Disable Gatekeeper Auto-Rearm"];
nall::execute("sudo", "defaults", "write", "/Library/Preferences/com.apple.security", "GKAutoRearm", "-bool", "NO"); nall::execute("sudo", "defaults", "write", "/Library/Preferences/com.apple.security", "GKAutoRearm", "-bool", "NO");
if(nall::execute("defaults", "read", "/Library/Preferences/com.apple.security", "GKAutoRearm").strip() == "0") { if(nall::execute("defaults", "read", "/Library/Preferences/com.apple.security", "GKAutoRearm").output.strip() == "0") {
[alert setAlertStyle:NSInformationalAlertStyle]; [alert setAlertStyle:NSInformationalAlertStyle];
[alert setInformativeText:@"Gatekeeper's automatic 30-day rearm behavior has been disabled successfully."]; [alert setInformativeText:@"Gatekeeper's automatic 30-day rearm behavior has been disabled successfully."];
[disableGatekeeperAutoRearm setHidden:YES]; [disableGatekeeperAutoRearm setHidden:YES];

View file

@ -12,7 +12,7 @@ auto BrowserWindow::save() -> string {
return pBrowserWindow::save(state); return pBrowserWindow::save(state);
} }
auto BrowserWindow::setFilters(const lstring& filters) -> type& { auto BrowserWindow::setFilters(const string_vector& filters) -> type& {
state.filters = filters; state.filters = filters;
return *this; return *this;
} }

View file

@ -16,13 +16,13 @@
using nall::function; using nall::function;
using nall::image; using nall::image;
using nall::lstring;
using nall::maybe; using nall::maybe;
using nall::nothing; using nall::nothing;
using nall::set; using nall::set;
using nall::shared_pointer; using nall::shared_pointer;
using nall::shared_pointer_weak; using nall::shared_pointer_weak;
using nall::string; using nall::string;
using nall::string_vector;
using nall::vector; using nall::vector;
namespace hiro { namespace hiro {
@ -477,14 +477,14 @@ struct BrowserWindow {
auto directory() -> string; auto directory() -> string;
auto open() -> string; auto open() -> string;
auto save() -> string; auto save() -> string;
auto setFilters(const lstring& filters = {"*"}) -> type&; auto setFilters(const string_vector& filters = {"*"}) -> type&;
auto setParent(sWindow parent) -> type&; auto setParent(sWindow parent) -> type&;
auto setPath(const string& path = "") -> type&; auto setPath(const string& path = "") -> type&;
auto setTitle(const string& title = "") -> type&; auto setTitle(const string& title = "") -> type&;
//private: //private:
struct State { struct State {
lstring filters; string_vector filters;
sWindow parent; sWindow parent;
string path; string path;
string title; string title;
@ -667,7 +667,7 @@ struct mWindow : mObject {
auto append(sStatusBar statusBar) -> type&; auto append(sStatusBar statusBar) -> type&;
auto backgroundColor() const -> Color; auto backgroundColor() const -> Color;
auto doClose() const -> void; auto doClose() const -> void;
auto doDrop(lstring) const -> void; auto doDrop(string_vector) const -> void;
auto doKeyPress(signed) const -> void; auto doKeyPress(signed) const -> void;
auto doKeyRelease(signed) const -> void; auto doKeyRelease(signed) const -> void;
auto doMove() const -> void; auto doMove() const -> void;
@ -680,7 +680,7 @@ struct mWindow : mObject {
auto menuBar() const -> MenuBar; auto menuBar() const -> MenuBar;
auto modal() const -> bool; auto modal() const -> bool;
auto onClose(const function<void ()>& callback = {}) -> type&; auto onClose(const function<void ()>& callback = {}) -> type&;
auto onDrop(const function<void (lstring)>& callback = {}) -> type&; auto onDrop(const function<void (string_vector)>& callback = {}) -> type&;
auto onKeyPress(const function<void (signed)>& callback = {}) -> type&; auto onKeyPress(const function<void (signed)>& callback = {}) -> type&;
auto onKeyRelease(const function<void (signed)>& callback = {}) -> type&; auto onKeyRelease(const function<void (signed)>& callback = {}) -> type&;
auto onMove(const function<void ()>& callback = {}) -> type&; auto onMove(const function<void ()>& callback = {}) -> type&;
@ -717,7 +717,7 @@ struct mWindow : mObject {
sMenuBar menuBar; sMenuBar menuBar;
bool modal = false; bool modal = false;
function<void ()> onClose; function<void ()> onClose;
function<void (lstring)> onDrop; function<void (string_vector)> onDrop;
function<void (signed)> onKeyPress; function<void (signed)> onKeyPress;
function<void (signed)> onKeyRelease; function<void (signed)> onKeyRelease;
function<void ()> onMove; function<void ()> onMove;
@ -989,14 +989,14 @@ struct mCanvas : mWidget {
auto color() const -> Color; auto color() const -> Color;
auto data() -> uint32_t*; auto data() -> uint32_t*;
auto droppable() const -> bool; auto droppable() const -> bool;
auto doDrop(lstring names) const -> void; auto doDrop(string_vector names) const -> void;
auto doMouseLeave() const -> void; auto doMouseLeave() const -> void;
auto doMouseMove(Position position) const -> void; auto doMouseMove(Position position) const -> void;
auto doMousePress(Mouse::Button button) const -> void; auto doMousePress(Mouse::Button button) const -> void;
auto doMouseRelease(Mouse::Button button) const -> void; auto doMouseRelease(Mouse::Button button) const -> void;
auto gradient() const -> Gradient; auto gradient() const -> Gradient;
auto icon() const -> image; auto icon() const -> image;
auto onDrop(const function<void (lstring)>& callback = {}) -> type&; auto onDrop(const function<void (string_vector)>& callback = {}) -> type&;
auto onMouseLeave(const function<void ()>& callback = {}) -> type&; auto onMouseLeave(const function<void ()>& callback = {}) -> type&;
auto onMouseMove(const function<void (Position)>& callback = {}) -> type&; auto onMouseMove(const function<void (Position)>& callback = {}) -> type&;
auto onMousePress(const function<void (Mouse::Button)>& callback = {}) -> type&; auto onMousePress(const function<void (Mouse::Button)>& callback = {}) -> type&;
@ -1015,7 +1015,7 @@ struct mCanvas : mWidget {
bool droppable = false; bool droppable = false;
Gradient gradient; Gradient gradient;
image icon; image icon;
function<void (lstring)> onDrop; function<void (string_vector)> onDrop;
function<void ()> onMouseLeave; function<void ()> onMouseLeave;
function<void (Position)> onMouseMove; function<void (Position)> onMouseMove;
function<void (Mouse::Button)> onMousePress; function<void (Mouse::Button)> onMousePress;
@ -1944,14 +1944,14 @@ struct mVerticalSlider : mWidget {
struct mViewport : mWidget { struct mViewport : mWidget {
Declare(Viewport) Declare(Viewport)
auto doDrop(lstring names) const -> void; auto doDrop(string_vector names) const -> void;
auto doMouseLeave() const -> void; auto doMouseLeave() const -> void;
auto doMouseMove(Position position) const -> void; auto doMouseMove(Position position) const -> void;
auto doMousePress(Mouse::Button button) const -> void; auto doMousePress(Mouse::Button button) const -> void;
auto doMouseRelease(Mouse::Button button) const -> void; auto doMouseRelease(Mouse::Button button) const -> void;
auto droppable() const -> bool; auto droppable() const -> bool;
auto handle() const -> uintptr_t; auto handle() const -> uintptr_t;
auto onDrop(const function<void (lstring)>& callback = {}) -> type&; auto onDrop(const function<void (string_vector)>& callback = {}) -> type&;
auto onMouseLeave(const function<void ()>& callback = {}) -> type&; auto onMouseLeave(const function<void ()>& callback = {}) -> type&;
auto onMouseMove(const function<void (Position position)>& callback = {}) -> type&; auto onMouseMove(const function<void (Position position)>& callback = {}) -> type&;
auto onMousePress(const function<void (Mouse::Button)>& callback = {}) -> type&; auto onMousePress(const function<void (Mouse::Button)>& callback = {}) -> type&;
@ -1961,7 +1961,7 @@ struct mViewport : mWidget {
//private: //private:
struct State { struct State {
bool droppable = false; bool droppable = false;
function<void (lstring)> onDrop; function<void (string_vector)> onDrop;
function<void ()> onMouseLeave; function<void ()> onMouseLeave;
function<void (Position)> onMouseMove; function<void (Position)> onMouseMove;
function<void (Mouse::Button)> onMousePress; function<void (Mouse::Button)> onMousePress;

View file

@ -234,14 +234,14 @@ struct Canvas : sCanvas {
auto color() const { return self().color(); } auto color() const { return self().color(); }
auto data() { return self().data(); } auto data() { return self().data(); }
auto droppable() const { return self().droppable(); } auto droppable() const { return self().droppable(); }
auto doDrop(lstring names) { return self().doDrop(names); } auto doDrop(string_vector names) { return self().doDrop(names); }
auto doMouseLeave() const { return self().doMouseLeave(); } auto doMouseLeave() const { return self().doMouseLeave(); }
auto doMouseMove(Position position) const { return self().doMouseMove(position); } auto doMouseMove(Position position) const { return self().doMouseMove(position); }
auto doMousePress(Mouse::Button button) const { return self().doMousePress(button); } auto doMousePress(Mouse::Button button) const { return self().doMousePress(button); }
auto doMouseRelease(Mouse::Button button) const { return self().doMouseRelease(button); } auto doMouseRelease(Mouse::Button button) const { return self().doMouseRelease(button); }
auto gradient() const { return self().gradient(); } auto gradient() const { return self().gradient(); }
auto icon() const { return self().icon(); } auto icon() const { return self().icon(); }
auto onDrop(const function<void (lstring)>& callback = {}) { return self().onDrop(callback), *this; } auto onDrop(const function<void (string_vector)>& callback = {}) { return self().onDrop(callback), *this; }
auto onMouseLeave(const function<void ()>& callback = {}) { return self().onMouseLeave(callback), *this; } auto onMouseLeave(const function<void ()>& callback = {}) { return self().onMouseLeave(callback), *this; }
auto onMouseMove(const function<void (Position)>& callback = {}) { return self().onMouseMove(callback), *this; } auto onMouseMove(const function<void (Position)>& callback = {}) { return self().onMouseMove(callback), *this; }
auto onMousePress(const function<void (Mouse::Button)>& callback = {}) { return self().onMousePress(callback), *this; } auto onMousePress(const function<void (Mouse::Button)>& callback = {}) { return self().onMousePress(callback), *this; }
@ -873,14 +873,14 @@ struct Viewport : sViewport {
DeclareSharedWidget(Viewport) DeclareSharedWidget(Viewport)
using internalType = mViewport; using internalType = mViewport;
auto doDrop(lstring names) const { return self().doDrop(names); } auto doDrop(string_vector names) const { return self().doDrop(names); }
auto doMouseLeave() const { return self().doMouseLeave(); } auto doMouseLeave() const { return self().doMouseLeave(); }
auto doMouseMove(Position position) const { return self().doMouseMove(position); } auto doMouseMove(Position position) const { return self().doMouseMove(position); }
auto doMousePress(Mouse::Button button) const { return self().doMousePress(button); } auto doMousePress(Mouse::Button button) const { return self().doMousePress(button); }
auto doMouseRelease(Mouse::Button button) const { return self().doMouseRelease(button); } auto doMouseRelease(Mouse::Button button) const { return self().doMouseRelease(button); }
auto droppable() const { return self().droppable(); } auto droppable() const { return self().droppable(); }
auto handle() const { return self().handle(); } auto handle() const { return self().handle(); }
auto onDrop(const function<void (lstring)>& callback = {}) { return self().onDrop(callback), *this; } auto onDrop(const function<void (string_vector)>& callback = {}) { return self().onDrop(callback), *this; }
auto onMouseLeave(const function<void ()>& callback = {}) { return self().onMouseLeave(callback), *this; } auto onMouseLeave(const function<void ()>& callback = {}) { return self().onMouseLeave(callback), *this; }
auto onMouseMove(const function<void (Position)>& callback = {}) { return self().onMouseMove(callback), *this; } auto onMouseMove(const function<void (Position)>& callback = {}) { return self().onMouseMove(callback), *this; }
auto onMousePress(const function<void (Mouse::Button)>& callback = {}) { return self().onMousePress(callback), *this; } auto onMousePress(const function<void (Mouse::Button)>& callback = {}) { return self().onMousePress(callback), *this; }
@ -937,7 +937,7 @@ struct Window : sWindow {
auto append(sStatusBar statusBar) { return self().append(statusBar), *this; } auto append(sStatusBar statusBar) { return self().append(statusBar), *this; }
auto backgroundColor() const { return self().backgroundColor(); } auto backgroundColor() const { return self().backgroundColor(); }
auto doClose() const { return self().doClose(); } auto doClose() const { return self().doClose(); }
auto doDrop(lstring names) const { return self().doDrop(names); } auto doDrop(string_vector names) const { return self().doDrop(names); }
auto doKeyPress(signed key) const { return self().doKeyPress(key); } auto doKeyPress(signed key) const { return self().doKeyPress(key); }
auto doKeyRelease(signed key) const { return self().doKeyRelease(key); } auto doKeyRelease(signed key) const { return self().doKeyRelease(key); }
auto doMove() const { return self().doMove(); } auto doMove() const { return self().doMove(); }
@ -950,7 +950,7 @@ struct Window : sWindow {
auto menuBar() const { return self().menuBar(); } auto menuBar() const { return self().menuBar(); }
auto modal() const { return self().modal(); } auto modal() const { return self().modal(); }
auto onClose(const function<void ()>& callback = {}) { return self().onClose(callback), *this; } auto onClose(const function<void ()>& callback = {}) { return self().onClose(callback), *this; }
auto onDrop(const function<void (lstring)>& callback = {}) { return self().onDrop(callback), *this; } auto onDrop(const function<void (string_vector)>& callback = {}) { return self().onDrop(callback), *this; }
auto onKeyPress(const function<void (signed)>& callback = {}) { return self().onKeyPress(callback), *this; } auto onKeyPress(const function<void (signed)>& callback = {}) { return self().onKeyPress(callback), *this; }
auto onKeyRelease(const function<void (signed)>& callback = {}) { return self().onKeyRelease(callback), *this; } auto onKeyRelease(const function<void (signed)>& callback = {}) { return self().onKeyRelease(callback), *this; }
auto onMove(const function<void ()>& callback = {}) { return self().onMove(callback), *this; } auto onMove(const function<void ()>& callback = {}) { return self().onMove(callback), *this; }

View file

@ -18,7 +18,7 @@ auto mCanvas::droppable() const -> bool {
return state.droppable; return state.droppable;
} }
auto mCanvas::doDrop(lstring names) const -> void { auto mCanvas::doDrop(string_vector names) const -> void {
if(state.onDrop) return state.onDrop(names); if(state.onDrop) return state.onDrop(names);
} }
@ -46,7 +46,7 @@ auto mCanvas::icon() const -> image {
return state.icon; return state.icon;
} }
auto mCanvas::onDrop(const function<void (lstring)>& callback) -> type& { auto mCanvas::onDrop(const function<void (string_vector)>& callback) -> type& {
state.onDrop = callback; state.onDrop = callback;
return *this; return *this;
} }

View file

@ -6,7 +6,7 @@ auto mViewport::allocate() -> pObject* {
// //
auto mViewport::doDrop(lstring names) const -> void { auto mViewport::doDrop(string_vector names) const -> void {
if(state.onDrop) return state.onDrop(names); if(state.onDrop) return state.onDrop(names);
} }
@ -34,7 +34,7 @@ auto mViewport::handle() const -> uintptr_t {
return signal(handle); return signal(handle);
} }
auto mViewport::onDrop(const function<void (lstring)>& callback) -> type& { auto mViewport::onDrop(const function<void (string_vector)>& callback) -> type& {
state.onDrop = callback; state.onDrop = callback;
return *this; return *this;
} }

View file

@ -47,7 +47,7 @@ auto mWindow::doClose() const -> void {
if(state.onClose) return state.onClose(); if(state.onClose) return state.onClose();
} }
auto mWindow::doDrop(lstring names) const -> void { auto mWindow::doDrop(string_vector names) const -> void {
if(state.onDrop) return state.onDrop(names); if(state.onDrop) return state.onDrop(names);
} }
@ -104,7 +104,7 @@ auto mWindow::onClose(const function<void ()>& callback) -> type& {
return *this; return *this;
} }
auto mWindow::onDrop(const function<void (lstring)>& callback) -> type& { auto mWindow::onDrop(const function<void (string_vector)>& callback) -> type& {
state.onDrop = callback; state.onDrop = callback;
return *this; return *this;
} }

View file

@ -7,7 +7,7 @@ struct BrowserDialogWindow {
auto change() -> void; auto change() -> void;
auto isFolder(const string& name) -> bool; auto isFolder(const string& name) -> bool;
auto isMatch(const string& name) -> bool; auto isMatch(const string& name) -> bool;
auto run() -> lstring; auto run() -> string_vector;
auto setPath(string path) -> void; auto setPath(string path) -> void;
private: private:
@ -26,7 +26,7 @@ private:
Button cancelButton{&controlLayout, Size{80, 0}, 5}; Button cancelButton{&controlLayout, Size{80, 0}, 5};
BrowserDialog::State& state; BrowserDialog::State& state;
vector<lstring> filters; vector<string_vector> filters;
}; };
//accept button clicked, or enter pressed on file name line edit //accept button clicked, or enter pressed on file name line edit
@ -113,14 +113,14 @@ auto BrowserDialogWindow::isMatch(const string& name) -> bool {
return false; return false;
} }
auto BrowserDialogWindow::run() -> lstring { auto BrowserDialogWindow::run() -> string_vector {
state.response.reset(); state.response.reset();
layout.setMargin(5); layout.setMargin(5);
pathName.onActivate([&] { setPath(pathName.text()); }); pathName.onActivate([&] { setPath(pathName.text()); });
pathRefresh.setBordered(false).setIcon(Icon::Action::Refresh).onActivate([&] { setPath(state.path); }); pathRefresh.setBordered(false).setIcon(Icon::Action::Refresh).onActivate([&] { setPath(state.path); });
pathHome.setBordered(false).setIcon(Icon::Go::Home).onActivate([&] { setPath(Path::user()); }); pathHome.setBordered(false).setIcon(Icon::Go::Home).onActivate([&] { setPath(Path::user()); });
pathUp.setBordered(false).setIcon(Icon::Go::Up).onActivate([&] { setPath(dirname(state.path)); }); pathUp.setBordered(false).setIcon(Icon::Go::Up).onActivate([&] { setPath(Location::dir(state.path)); });
view.setBatchable(state.action == "openFiles").onActivate([&] { activate(); }).onChange([&] { change(); }); view.setBatchable(state.action == "openFiles").onActivate([&] { activate(); }).onChange([&] { change(); });
filterList.setVisible(state.action != "selectFolder").onChange([&] { setPath(state.path); }); filterList.setVisible(state.action != "selectFolder").onChange([&] { setPath(state.path); });
for(auto& filter : state.filters) { for(auto& filter : state.filters) {
@ -156,7 +156,7 @@ auto BrowserDialogWindow::run() -> lstring {
auto BrowserDialogWindow::setPath(string path) -> void { auto BrowserDialogWindow::setPath(string path) -> void {
path.transform("\\", "/"); path.transform("\\", "/");
if(!path.endsWith("/")) path.append("/"); if((path || Path::root() == "/") && !path.endsWith("/")) path.append("/");
pathName.setText(state.path = path); pathName.setText(state.path = path);
view.reset(); view.reset();
@ -197,7 +197,7 @@ auto BrowserDialog::openFile() -> string {
return {}; return {};
} }
auto BrowserDialog::openFiles() -> lstring { auto BrowserDialog::openFiles() -> string_vector {
state.action = "openFiles"; state.action = "openFiles";
if(!state.title) state.title = "Open Files"; if(!state.title) state.title = "Open Files";
if(auto result = _run()) return result; if(auto result = _run()) return result;
@ -225,7 +225,7 @@ auto BrowserDialog::selectFolder() -> string {
return {}; return {};
} }
auto BrowserDialog::setFilters(const lstring& filters) -> type& { auto BrowserDialog::setFilters(const string_vector& filters) -> type& {
state.filters = filters; state.filters = filters;
return *this; return *this;
} }
@ -245,7 +245,7 @@ auto BrowserDialog::setTitle(const string& title) -> type& {
return *this; return *this;
} }
auto BrowserDialog::_run() -> lstring { auto BrowserDialog::_run() -> string_vector {
if(!state.path) state.path = Path::user(); if(!state.path) state.path = Path::user();
return BrowserDialogWindow(state).run(); return BrowserDialogWindow(state).run();
} }

View file

@ -7,11 +7,11 @@ struct BrowserDialog {
BrowserDialog(); BrowserDialog();
auto openFile() -> string; //one existing file auto openFile() -> string; //one existing file
auto openFiles() -> lstring; //any existing files or folders auto openFiles() -> string_vector; //any existing files or folders
auto openFolder() -> string; //one existing folder auto openFolder() -> string; //one existing folder
auto saveFile() -> string; //one file auto saveFile() -> string; //one file
auto selectFolder() -> string; //one existing folder auto selectFolder() -> string; //one existing folder
auto setFilters(const lstring& filters = {}) -> type&; auto setFilters(const string_vector& filters = {}) -> type&;
auto setParent(const sWindow& parent) -> type&; auto setParent(const sWindow& parent) -> type&;
auto setPath(const string& path = "") -> type&; auto setPath(const string& path = "") -> type&;
auto setTitle(const string& title = "") -> type&; auto setTitle(const string& title = "") -> type&;
@ -19,14 +19,14 @@ struct BrowserDialog {
private: private:
struct State { struct State {
string action; string action;
lstring filters = {"*"}; string_vector filters = {"*"};
sWindow parent; sWindow parent;
string path; string path;
lstring response; string_vector response;
string title; string title;
} state; } state;
auto _run() -> lstring; auto _run() -> string_vector;
friend class BrowserDialogWindow; friend class BrowserDialogWindow;
}; };

View file

@ -4,19 +4,19 @@ MessageDialog::MessageDialog(const string& text) {
state.text = text; state.text = text;
} }
auto MessageDialog::error(const lstring& buttons) -> string { auto MessageDialog::error(const string_vector& buttons) -> string {
state.buttons = buttons; state.buttons = buttons;
state.icon = Icon::Prompt::Error; state.icon = Icon::Prompt::Error;
return _run(); return _run();
} }
auto MessageDialog::information(const lstring& buttons) -> string { auto MessageDialog::information(const string_vector& buttons) -> string {
state.buttons = buttons; state.buttons = buttons;
state.icon = Icon::Prompt::Information; state.icon = Icon::Prompt::Information;
return _run(); return _run();
} }
auto MessageDialog::question(const lstring& buttons) -> string { auto MessageDialog::question(const string_vector& buttons) -> string {
state.buttons = buttons; state.buttons = buttons;
state.icon = Icon::Prompt::Question; state.icon = Icon::Prompt::Question;
return _run(); return _run();
@ -37,7 +37,7 @@ auto MessageDialog::setTitle(const string& title) -> type& {
return *this; return *this;
} }
auto MessageDialog::warning(const lstring& buttons) -> string { auto MessageDialog::warning(const string_vector& buttons) -> string {
state.buttons = buttons; state.buttons = buttons;
state.icon = Icon::Prompt::Warning; state.icon = Icon::Prompt::Warning;
return _run(); return _run();

View file

@ -4,17 +4,17 @@ struct MessageDialog {
using type = MessageDialog; using type = MessageDialog;
MessageDialog(const string& text = ""); MessageDialog(const string& text = "");
auto error(const lstring& buttons = {"Ok"}) -> string; auto error(const string_vector& buttons = {"Ok"}) -> string;
auto information(const lstring& buttons = {"Ok"}) -> string; auto information(const string_vector& buttons = {"Ok"}) -> string;
auto question(const lstring& buttons = {"Yes", "No"}) -> string; auto question(const string_vector& buttons = {"Yes", "No"}) -> string;
auto setParent(sWindow parent = {}) -> type&; auto setParent(sWindow parent = {}) -> type&;
auto setText(const string& text = "") -> type&; auto setText(const string& text = "") -> type&;
auto setTitle(const string& title = "") -> type&; auto setTitle(const string& title = "") -> type&;
auto warning(const lstring& buttons = {"Ok"}) -> string; auto warning(const string_vector& buttons = {"Ok"}) -> string;
private: private:
struct State { struct State {
lstring buttons; string_vector buttons;
vector<uint8_t> icon; vector<uint8_t> icon;
sWindow parent; sWindow parent;
string response; string response;

View file

@ -2,11 +2,11 @@
namespace hiro { namespace hiro {
static auto BrowserWindow_addFilters(GtkWidget* dialog, lstring filters) -> void { static auto BrowserWindow_addFilters(GtkWidget* dialog, string_vector filters) -> void {
for(auto& filter : filters) { for(auto& filter : filters) {
GtkFileFilter* gtkFilter = gtk_file_filter_new(); GtkFileFilter* gtkFilter = gtk_file_filter_new();
gtk_file_filter_set_name(gtkFilter, filter); gtk_file_filter_set_name(gtkFilter, filter);
lstring patterns = filter.split("(", 1L)(1).trimRight(")", 1L).split(",").strip(); auto patterns = filter.split("(", 1L)(1).trimRight(")", 1L).split(",").strip();
for(auto& pattern : patterns) gtk_file_filter_add_pattern(gtkFilter, pattern); for(auto& pattern : patterns) gtk_file_filter_add_pattern(gtkFilter, pattern);
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), gtkFilter); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), gtkFilter);
} }

View file

@ -36,11 +36,11 @@ static auto CreateImage(const image& icon, bool scale = false) -> GtkImage* {
return gtkIcon; return gtkIcon;
} }
static auto DropPaths(GtkSelectionData* data) -> lstring { static auto DropPaths(GtkSelectionData* data) -> string_vector {
gchar** uris = gtk_selection_data_get_uris(data); gchar** uris = gtk_selection_data_get_uris(data);
if(uris == nullptr) return {}; if(uris == nullptr) return {};
lstring paths; string_vector paths;
for(unsigned n = 0; uris[n] != nullptr; n++) { for(unsigned n = 0; uris[n] != nullptr; n++) {
gchar* pathname = g_filename_from_uri(uris[n], nullptr, nullptr); gchar* pathname = g_filename_from_uri(uris[n], nullptr, nullptr);
if(pathname == nullptr) continue; if(pathname == nullptr) continue;

View file

@ -5,7 +5,7 @@ namespace hiro {
static auto Canvas_drop(GtkWidget* widget, GdkDragContext* context, signed x, signed y, static auto Canvas_drop(GtkWidget* widget, GdkDragContext* context, signed x, signed y,
GtkSelectionData* data, unsigned type, unsigned timestamp, pCanvas* p) -> void { GtkSelectionData* data, unsigned type, unsigned timestamp, pCanvas* p) -> void {
if(!p->state().droppable) return; if(!p->state().droppable) return;
lstring paths = DropPaths(data); auto paths = DropPaths(data);
if(!paths) return; if(!paths) return;
p->self().doDrop(paths); p->self().doDrop(paths);
} }

View file

@ -18,7 +18,7 @@ struct pConsole : pWidget {
GtkWidget* subWidget = nullptr; GtkWidget* subWidget = nullptr;
GtkTextBuffer* textBuffer = nullptr; GtkTextBuffer* textBuffer = nullptr;
string previousPrompt; string previousPrompt;
lstring history; string_vector history;
unsigned historyOffset = 0; unsigned historyOffset = 0;
}; };

View file

@ -193,7 +193,7 @@ auto pIconView::_updateSelected() -> void {
while(p) { while(p) {
auto path = (GtkTreePath*)p->data; auto path = (GtkTreePath*)p->data;
char* pathString = gtk_tree_path_to_string(path); char* pathString = gtk_tree_path_to_string(path);
unsigned position = natural(pathString); unsigned position = toNatural(pathString);
g_free(pathString); g_free(pathString);
selected.append(position); selected.append(position);
p = p->next; p = p->next;

View file

@ -218,7 +218,7 @@ auto pTableView::_doContext() -> void {
auto pTableView::_doDataFunc(GtkTreeViewColumn* gtkColumn, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void { auto pTableView::_doDataFunc(GtkTreeViewColumn* gtkColumn, GtkCellRenderer* renderer, GtkTreeIter* iter) -> void {
auto path = gtk_tree_model_get_string_from_iter(gtkTreeModel, iter); auto path = gtk_tree_model_get_string_from_iter(gtkTreeModel, iter);
auto row = natural(path); auto row = toNatural(path);
g_free(path); g_free(path);
if(auto& header = state().header) { if(auto& header = state().header) {
@ -271,7 +271,7 @@ auto pTableView::_doEdit(GtkCellRendererText* gtkCellRendererText, const char* p
for(auto& column : header->state.columns) { for(auto& column : header->state.columns) {
if(auto delegate = column->self()) { if(auto delegate = column->self()) {
if(gtkCellRendererText == GTK_CELL_RENDERER_TEXT(delegate->gtkCellText)) { if(gtkCellRendererText == GTK_CELL_RENDERER_TEXT(delegate->gtkCellText)) {
auto row = natural(path); auto row = toNatural(path);
if(auto item = self().item(row)) { if(auto item = self().item(row)) {
if(auto cell = item->cell(column->offset())) { if(auto cell = item->cell(column->offset())) {
if(string{text} != cell->state.text) { if(string{text} != cell->state.text) {
@ -343,7 +343,7 @@ auto pTableView::_doToggle(GtkCellRendererToggle* gtkCellRendererToggle, const c
for(auto& column : header->state.columns) { for(auto& column : header->state.columns) {
if(auto delegate = column->self()) { if(auto delegate = column->self()) {
if(gtkCellRendererToggle == GTK_CELL_RENDERER_TOGGLE(delegate->gtkCellToggle)) { if(gtkCellRendererToggle == GTK_CELL_RENDERER_TOGGLE(delegate->gtkCellToggle)) {
auto row = natural(path); auto row = toNatural(path);
if(auto item = self().item(row)) { if(auto item = self().item(row)) {
if(auto cell = item->cell(column->offset())) { if(auto cell = item->cell(column->offset())) {
cell->setChecked(!cell->checked()); cell->setChecked(!cell->checked());
@ -371,7 +371,7 @@ auto pTableView::_updateSelected() -> void {
GtkTreeIter iter; GtkTreeIter iter;
if(gtk_tree_model_get_iter(gtkTreeModel, &iter, (GtkTreePath*)p->data)) { if(gtk_tree_model_get_iter(gtkTreeModel, &iter, (GtkTreePath*)p->data)) {
char* pathname = gtk_tree_model_get_string_from_iter(gtkTreeModel, &iter); char* pathname = gtk_tree_model_get_string_from_iter(gtkTreeModel, &iter);
unsigned selection = natural(pathname); unsigned selection = toNatural(pathname);
g_free(pathname); g_free(pathname);
selected.append(selection); selected.append(selection);
} }

View file

@ -5,7 +5,7 @@ namespace hiro {
static auto Viewport_dropEvent(GtkWidget* widget, GdkDragContext* context, signed x, signed y, static auto Viewport_dropEvent(GtkWidget* widget, GdkDragContext* context, signed x, signed y,
GtkSelectionData* data, unsigned type, unsigned timestamp, pViewport* p) -> void { GtkSelectionData* data, unsigned type, unsigned timestamp, pViewport* p) -> void {
if(!p->state().droppable) return; if(!p->state().droppable) return;
lstring paths = DropPaths(data); auto paths = DropPaths(data);
if(!paths) return; if(!paths) return;
p->self().doDrop(paths); p->self().doDrop(paths);
} }

View file

@ -81,7 +81,7 @@ static auto Window_configure(GtkWidget* widget, GdkEvent* event, pWindow* p) ->
static auto Window_drop(GtkWidget* widget, GdkDragContext* context, signed x, signed y, static auto Window_drop(GtkWidget* widget, GdkDragContext* context, signed x, signed y,
GtkSelectionData* data, unsigned type, unsigned timestamp, pWindow* p) -> void { GtkSelectionData* data, unsigned type, unsigned timestamp, pWindow* p) -> void {
if(!p->state().droppable) return; if(!p->state().droppable) return;
lstring paths = DropPaths(data); auto paths = DropPaths(data);
if(!paths) return; if(!paths) return;
p->self().doDrop(paths); p->self().doDrop(paths);
} }

View file

@ -24,11 +24,11 @@ static auto CreateIcon(const image& icon, bool scale = false) -> QIcon {
return QIcon(QPixmap::fromImage(qtImage)); return QIcon(QPixmap::fromImage(qtImage));
} }
static auto DropPaths(QDropEvent* event) -> lstring { static auto DropPaths(QDropEvent* event) -> string_vector {
QList<QUrl> urls = event->mimeData()->urls(); QList<QUrl> urls = event->mimeData()->urls();
if(urls.size() == 0) return {}; if(urls.size() == 0) return {};
lstring paths; string_vector paths;
for(auto n : range(urls.size())) { for(auto n : range(urls.size())) {
string path{urls[n].path().toUtf8().constData()}; string path{urls[n].path().toUtf8().constData()};
if(!path) continue; if(!path) continue;

View file

@ -33,7 +33,7 @@ void pListView::setCheckedNone() {
void pListView::setForegroundColor(Color color) { void pListView::setForegroundColor(Color color) {
} }
void pListView::setHeaderText(const lstring& text) { void pListView::setHeaderText(const string_vector& text) {
} }
void pListView::setHeaderVisible(bool visible) { void pListView::setHeaderVisible(bool visible) {

View file

@ -19,7 +19,7 @@ static auto BrowserWindow_fileDialog(bool save, BrowserWindow::State& state) ->
string filters; string filters;
for(auto& filter : state.filters) { for(auto& filter : state.filters) {
lstring part = filter.split("("); auto part = filter.split("(");
if(part.size() != 2) continue; if(part.size() != 2) continue;
part[1].trimRight(")", 1L); part[1].trimRight(")", 1L);
part[1].replace(" ", ""); part[1].replace(" ", "");

View file

@ -38,11 +38,11 @@ static auto CreateRGB(const Color& color) -> COLORREF {
return RGB(color.red(), color.green(), color.blue()); return RGB(color.red(), color.green(), color.blue());
} }
static auto DropPaths(WPARAM wparam) -> lstring { static auto DropPaths(WPARAM wparam) -> string_vector {
auto dropList = HDROP(wparam); auto dropList = HDROP(wparam);
auto fileCount = DragQueryFile(dropList, ~0u, nullptr, 0); auto fileCount = DragQueryFile(dropList, ~0u, nullptr, 0);
lstring paths; string_vector paths;
for(auto n : range(fileCount)) { for(auto n : range(fileCount)) {
auto length = DragQueryFile(dropList, n, nullptr, 0); auto length = DragQueryFile(dropList, n, nullptr, 0);
auto buffer = new wchar_t[length + 1]; auto buffer = new wchar_t[length + 1];

View file

@ -17,7 +17,7 @@ auto pLabel::destruct() -> void {
} }
auto pLabel::minimumSize() const -> Size { auto pLabel::minimumSize() const -> Size {
auto size = pFont::size(hfont, state().text); auto size = pFont::size(self().font(true), state().text ? state().text : " ");
return {size.width(), size.height()}; return {size.width(), size.height()};
} }

View file

@ -176,7 +176,7 @@ auto pWindow::onClose() -> void {
} }
auto pWindow::onDrop(WPARAM wparam) -> void { auto pWindow::onDrop(WPARAM wparam) -> void {
lstring paths = DropPaths(wparam); auto paths = DropPaths(wparam);
if(paths) self().doDrop(paths); if(paths) self().doDrop(paths);
} }