Skip to content

Commit

Permalink
Added ts_load_document and ts_get_filename script functions
Browse files Browse the repository at this point in the history
  • Loading branch information
aardappel committed May 22, 2020
1 parent 81d37cd commit 806914f
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 1 deletion.
2 changes: 2 additions & 0 deletions TS/docs/script_reference.html
Expand Up @@ -33,6 +33,8 @@ <h3>treesheets</h3>
<tr class="a" valign=top><td class="a"><tt><b>ts_set_style_bits</b>(s<font color="#666666">:int</font>)</tt></td><td class="a">sets one or more styles (bold = 1, italic = 2, fixed = 4, underline = 8, strikethru = 16) on the current cell.</td></tr>
<tr class="a" valign=top><td class="a"><tt><b>ts_set_status_message</b>(msg<font color="#666666">:string</font>)</tt></td><td class="a">sets the status message in TreeSheets.</td></tr>
<tr class="a" valign=top><td class="a"><tt><b>ts_get_filename_from_user</b>(is_save<font color="#666666">:int</font>) -> <font color="#666666">string</font></tt></td><td class="a">gets a filename using a file dialog. empty string if cancelled.</td></tr>
<tr class="a" valign=top><td class="a"><tt><b>ts_get_filename</b>() -> <font color="#666666">string</font></tt></td><td class="a">gets the current documents file name.</td></tr>
<tr class="a" valign=top><td class="a"><tt><b>ts_load_document</b>(filename<font color="#666666">:string</font>) -> <font color="#666666">int</font></tt></td><td class="a">loads a document, and makes it the active one. returns false if failed.</td></tr>
</table>
<h3>builtin</h3>
<table class="a" border=1 cellspacing=0 cellpadding=4>
Expand Down
12 changes: 12 additions & 0 deletions src/lobster_impl.cpp
Expand Up @@ -146,6 +146,18 @@ nfr("ts_get_filename_from_user", "is_save", "I", "S",
return Value(vm.NewString(si->GetFileNameFromUser(is_save.True())));
});

nfr("ts_get_filename", "", "", "S",
"gets the current documents file name.",
[](VM &vm) {
return Value(vm.NewString(si->GetFileName()));
});

nfr("ts_load_document", "filename", "S", "B",
"loads a document, and makes it the active one. returns false if failed.",
[](VM &vm, Value &filename) {
return Value(si->LoadDocument(filename.sval()->data()));
});

}

NativeRegistry natreg; // FIXME: global.
Expand Down
2 changes: 2 additions & 0 deletions src/script_interface.h
Expand Up @@ -5,6 +5,7 @@ typedef std::pair<int, int> icoord;
typedef std::pair<icoord, icoord> ibox;

struct ScriptInterface {
virtual bool LoadDocument(const char *filename) = 0;
virtual void GoToRoot() = 0;
virtual void GoToView() = 0;
virtual bool HasSelection() = 0;
Expand All @@ -28,6 +29,7 @@ struct ScriptInterface {
virtual void SetStyle(int s) = 0;
virtual void SetStatusMessage(std::string_view msg) = 0;
virtual std::string GetFileNameFromUser(bool is_save) = 0;
virtual std::string GetFileName() = 0;
};

typedef int64_t(*ScriptLoader)(std::string_view absfilename, std::string *dest, int64_t start,
Expand Down
19 changes: 18 additions & 1 deletion src/treesheets_impl.h
Expand Up @@ -5,11 +5,15 @@ struct TreeSheetsScriptImpl : public ScriptInterface {

enum { max_new_grid_dim = 256 }; // Don't allow crazy sizes.

std::string ScriptRun(const char *filename) {
void SwitchToCurrentDoc() {
doc = sys->frame->GetCurTab()->doc;
cur = doc->rootgrid;

doc->AddUndo(cur);
}

std::string ScriptRun(const char *filename) {
SwitchToCurrentDoc();

bool dump_builtins = false;
#ifdef _DEBUG
Expand All @@ -24,6 +28,14 @@ struct TreeSheetsScriptImpl : public ScriptInterface {
return err;
}

bool LoadDocument(const char *filename) {
auto msg = sys->LoadDB(filename);
if (*msg) return false;

SwitchToCurrentDoc();
return true;
}

void GoToRoot() { cur = doc->rootgrid; }
void GoToView() { cur = doc->curdrawroot; }
bool HasSelection() { return doc->selected.g; }
Expand Down Expand Up @@ -102,6 +114,11 @@ struct TreeSheetsScriptImpl : public ScriptInterface {
auto s = fn.utf8_str();
return std::string(s.data(), s.length());
}

std::string GetFileName() {
auto s = doc->filename.utf8_str();
return std::string(s.data(), s.length());
}
};

static int64_t TreeSheetsLoader(std::string_view absfilename, std::string *dest, int64_t start,
Expand Down

0 comments on commit 806914f

Please sign in to comment.