1
0

Try to get JS working

This commit is contained in:
Scott E. Graves
2017-02-16 00:14:08 -06:00
parent 7c86e946fc
commit 4de32f835a
8 changed files with 95 additions and 4 deletions

Binary file not shown.

View File

@@ -76,9 +76,10 @@
<TABLE WIDTH=100%>
<TR WIDTH=100%>
<TD ALIGN=CENTER VALIGN=TOP>
<select id="MountDrives"></select>
<input id="MountButton" type="button" value="Mount"/>
<input id="wallet_btn" type="button" value="Wallet" />
<input id="host_btn" type="button" value="Host" />
<input id="mount_btn" type="button" value="Mount"/>
</TD>
</TR>
<tr width="100%" align="center" valign="top">
@@ -92,5 +93,6 @@
<div id="host_tab" style="display: none"></div>
<div id="mount_tab" style="display: none"></div>
<script src="res:/JS/#136" type="text/javascript"></script>
</BODY>
</HTML>

Binary file not shown.

View File

@@ -210,6 +210,7 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="res\code.js" />
<None Include="res\SiaDrive.rc2" />
<None Include="SiaDrive.htm">
<DeploymentContent>true</DeploymentContent>

View File

@@ -50,6 +50,9 @@
<None Include="res\SiaDrive.rc2">
<Filter>Resource Files</Filter>
</None>
<None Include="res\code.js">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="SiaDrive.rc">

View File

@@ -61,7 +61,7 @@ BEGIN_DHTML_EVENT_MAP(CSiaDriveDlg)
DHTML_EVENT_ONCLICK(_T("CreateWalletButton"), OnButtonCreateWallet)
DHTML_EVENT_ONCLICK(_T("ConfirmSeedButton"), OnButtonConfirmSeed)
DHTML_EVENT_ONCLICK(_T("UnlockWalletButton"), OnButtonUnlockWallet)
DHTML_EVENT_ONCLICK(_T("UnlockWalletButton"), OnButtonUnlockWallet)
DHTML_EVENT_ONCLICK(_T("MountButton"), OnButtonMount)
END_DHTML_EVENT_MAP()
@@ -167,6 +167,62 @@ void CSiaDriveDlg::OnPaint()
}
}
BOOL CSiaDriveDlg::CallClientScript(LPCTSTR pStrFuncName, CStringArray* pArrFuncArgs, CComVariant* pOutVarRes)
{
BOOL bRes = FALSE;
CComVariant vaResult;
CComPtr<IHTMLDocument2> pIDoc2;
if (SUCCEEDED(this->GetDHtmlDocument(&pIDoc2))) //Uses CDHtmlDialog as 'this'
{
//Getting IDispatch for Java Script objects
CComPtr<IDispatch> spScript;
if (SUCCEEDED(pIDoc2->get_Script(&spScript)))
{
//Find dispid for given function in the object
CComBSTR bstrMember(pStrFuncName);
DISPID dispid = NULL;
if (SUCCEEDED(spScript->GetIDsOfNames(IID_NULL, &bstrMember, 1, LOCALE_USER_DEFAULT, &dispid)))
{
COleSafeArray ar;
ar.CreateOneDim(VT_VARIANT, pArrFuncArgs->GetSize());
for (long i = 0; i < pArrFuncArgs->GetSize(); i++)
{
CComVariant v(pArrFuncArgs->GetAt(i));
ar.PutElement(&i, &v);
}
long l = 0;
COleSafeArray sa;
sa.CreateOneDim(VT_VARIANT, 1);
sa.PutElement(&l, ar);
//Putting parameters
DISPPARAMS dispparams;
memset(&dispparams, 0, sizeof dispparams);
dispparams.cArgs = 1;
dispparams.rgvarg = sa;
dispparams.cNamedArgs = 0;
EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);
UINT nArgErr = (UINT)-1; // initialize to invalid arg
//Call JavaScript function
if (SUCCEEDED(spScript->Invoke(dispid, IID_NULL, 0, DISPATCH_METHOD, &dispparams, &vaResult, &excepInfo, &nArgErr)))
{
//Done!
bRes = TRUE;
}
}
}
}
if (pOutVarRes)
*pOutVarRes = vaResult;
return bRes;
}
// The system calls this function to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CSiaDriveDlg::OnQueryDragIcon()
@@ -217,6 +273,16 @@ HRESULT CSiaDriveDlg::OnButtonUnlockWallet(IHTMLElement* /*pElement*/)
return S_OK;
}
HRESULT CSiaDriveDlg::OnButtonMount(IHTMLElement* /*pElement*/)
{
CStringArray driveList;
driveList.Add(L"S");
driveList.Add(L"T");
CallClientScript(L"setAvailableDrives", &driveList, nullptr);
return S_OK;
}
bool IsRefreshKeyMessage(const MSG *message)
{
return message

View File

@@ -27,6 +27,7 @@ public:
HRESULT OnButtonCreateWallet(IHTMLElement* pElement);
HRESULT OnButtonConfirmSeed(IHTMLElement* pElement);
HRESULT OnButtonUnlockWallet(IHTMLElement* pElement);
HRESULT OnButtonMount(IHTMLElement* pElement);
// Implementation
protected:
@@ -56,6 +57,7 @@ private:
bool UpdateUi(const bool& refresh = true);
HRESULT GetDomNodeAndElementById(const String& id, CComPtr<IHTMLDOMNode>& node, CComPtr<IHTMLElement>& elem);
HRESULT GetDomNodeById(const String& id, CComPtr<IHTMLDOMNode>& node);
BOOL CallClientScript(LPCTSTR pStrFuncName, CStringArray* pArrFuncArgs, CComVariant* pOutVarRes);
private:
CSiaDriveConfig _siaConfig;

17
SiaDrive/res/code.js Normal file
View File

@@ -0,0 +1,17 @@
function setAvailableDrives(driveList) {
alert(driveList[0]);
var sel = document.getElementById("MountDrives");
sel.innerHTML = "";
for (var i in driveList) {
if (driveList.hasOwnProperty(i)) {
var drive = driveList[i];
var option = document.createElement("option");
option.innerText = drive + ":";
sel.appendChild(option);
}
}
}