/*
*
* ScreenshotViewer.xml
*
*/
var gViewerSelectedItemIdx;
function OnScreenshotViewerEvent_LstViewClicked(pPlusWnd, sControlId, nItemIdx) {
gViwerSelectedItemIdx = nItemIdx;
if (nItemIdx === -1) {
OnScreenshotViewerEvent_LstViewSelStateChanged(pPlusWnd, sControlId, nItemIdx);
}
}
function OnScreenshotViewerEvent_LstViewDblClicked(pPlusWnd, sControlId, nItemIdx) {
if (nItemIdx !== -1) {
OnScreenshotViewerEvent_CtrlClicked(pPlusWnd, 'lnkViewImage');
}
}
function OnScreenshotViewerEvent_CtrlClicked(pPlusWnd, sControlId) {
_debug.getfuncname(arguments);
if (sControlId === 'BaseBtnCancel') {
CloseWindow('ScreenshotViewer');
return false;
}
var sImageName = pPlusWnd.GetControlText('lblImageName');
var sImage = objPreferences['tSaveDirectory'] + sImageName;
switch (sControlId) {
case 'lnkSendImage':
Preview(0, sImage, false, true);
break;
case 'lnkUploadImage':
Ftp_UploadFile(sImage, true);
break;
case 'lnkConvertImage':
pPlusWnd.ImageElmt_SetImageFile('ImgPreview', 'pixel.png');
OpenWindow('ConvertImage', 0, true);
objWindows['ConvertImage'].SetControlText('lblImageName', sImageName);
var tWnd = objWindows['ConvertImage'];
tWnd.Combo_AddItem('cFileType', 'BMP', 0);
tWnd.Combo_AddItem('cFileType', 'JPG', 1);
tWnd.Combo_AddItem('cFileType', 'GIF', 2);
tWnd.Combo_AddItem('cFileType', 'PNG', 3);
break;
case 'lnkRefreshImage':
ScreenshotViewer_SetControlState(pPlusWnd, _win32._const._SW_SHOW, false);
_win32.ShowWindow(pPlusWnd.GetControlHandle('lnkEditImage'), _win32._const._SW_SHOW);
_win32.ShowWindow(pPlusWnd.GetControlHandle('lnkRefreshImage'), _win32._const._SW_HIDE);
ScreenshotViewer_SetSidebarControlState(pPlusWnd, gViewerSelectedItemIdx, LstView_GetSelectedCount(pPlusWnd, 'LvFiles'));
ScreenshotViewer_SetControlState(pPlusWnd, _win32._const._SW_SHOW, true);
pPlusWnd.ImageElmt_SetImageFile('ImgPreview', '\\'+sImage);
var oGdip = new Gdip();
oGdip.Initialize();
pPlusWnd.SetControlText('lblImageSize',
_lang.text['ScreenshotViewer_Size'] + ' ' + oGdip.FormatFileSize(oGdip.GetImageSizeInBytes(sImage)));
pPlusWnd.SetControlText('lblImageDimensions',
_lang.text['ScreenshotViewer_Dimensions'] + ' ' + oGdip.GetImageDimensions(sImage));
pPlusWnd.SetControlText('lblImageCreated',
_lang.text['ScreenshotViewer_DateCreated'] + ' ' + oGdip.GetDateCreated(sImage));
oGdip.Uninitialize();
break;
case 'lnkEditImage':
new ActiveXObject('WScript.Shell').run(sReplace(objPreferences['tEditProgram'], [sImage]));
pPlusWnd.ImageElmt_SetImageFile('ImgPreview', 'pixel.png');
ScreenshotViewer_SetControlState(pPlusWnd, _win32._const._SW_HIDE, false);
_win32.ShowWindow(pPlusWnd.GetControlHandle('lnkRefreshImage'), _win32._const._SW_SHOW);
_win32.ShowWindow(pPlusWnd.GetControlHandle('lnkEditImage'), _win32._const._SW_HIDE);
ScreenshotViewer_SetSidebarControlState(pPlusWnd, -1, LstView_GetSelectedCount(pPlusWnd, 'LvFiles'));
break;
case 'lnkRefreshImages':
RefreshScreenshotViewerList();
break;
case 'lnkDeleteImage':
if (LstView_GetSelectedCount(pPlusWnd, 'LvFiles') > 1) {
var res = _win32.MessageBoxW(pPlusWnd.Handle, _lang.text['MsgBoxDeleteMultiFile'],
_lang.text['MsgBoxDeleteMultiFile_Title'], 36);
if (res === 6) {
pPlusWnd.ImageElmt_SetImageFile('ImgPreview', 'no_image.png');
ScreenshotViewer_SetControlState(pPlusWnd, _win32._const._SW_HIDE, false);
_win32.ShowWindow(pPlusWnd.GetControlHandle('lnkRefreshImage'), _win32._const._SW_SHOW);
var sFileName, sFilePath;
for (var i=0, len=LstView_GetCount('LvFiles'); i<len; ++i) {
if (LstView_GetSelectedState('LvFiles', i)) {
sFileName = LstView_GetItemText('LvFiles', i, 0);
if (_win32.DeleteFileW(objPreferences['tSaveDirectory'] + sFileName) === 0) {
_win32.MessageBoxW(Handle, sReplace(_lang.text['MsgBoxDeleteFileError'], [sFileName]),
_lang.text['MsgBoxError_Title'], 32);
}
}
}
RefreshScreenshotViewerList();
OnScreenshotViewerEvent_LstViewClicked(pPlusWnd, sControlId, -1);
}
} else {
res = _win32.MessageBoxW(pPlusWnd.Handle, sReplace(
_lang.text['MsgBoxDeleteFile'],
[sImageName]
), _lang.text['MsgBoxDeleteFile_Title'], 36);
if (res === 6) {
OnScreenshotViewerEvent_LstViewClicked(pPlusWnd, sControlId, -1);
if (_win32.DeleteFileW(sImage) === 0) {
_win32.MessageBoxW(Handle, sReplace(_lang.text['MsgBoxDeleteFileError'], [sImageName]),
_lang.text['MsgBoxError_Title'], 32);
}
RefreshScreenshotViewerList();
}
}
break;
case 'lnkViewImage':
var tWnd = OpenWindow('ViewImage', 0x1);
tWnd.ImageElmt_SetImageFile('ImgPreview', '\\' + sImage);
_win32.ShowWindow(tWnd.Handle, _win32._const._SW_SHOW);
break;
case 'lnkCopyClipboard' :
pPlusWnd.ImageElmt_SetImageFile('ImgPreview', 'pixel.png');
var oGdip = new Gdip();
oGdip.Initialize();
var hImage = oGdip.GdiCreateHBITMAPFromFile(sImage);
oGdip.Clipboard_SetData(hImage, pPlusWnd.Handle);
objBitmaps.push(hImage);
pPlusWnd.ImageElmt_SetImageFile('ImgPreview', '\\' + sImage);
oGdip.Uninitialize();
break;
case 'lnkDeleteAll' :
if (_win32.MessageBoxW(pPlusWnd.Handle, _lang.text['MsgBoxDeleteAllFiles'], _lang.text['MsgBoxDeleteAllFiles_Title'], 36) !== 6) return false;
OnScreenshotViewerEvent_LstViewClicked(pPlusWnd, sControlId, -1);
var aFiles = GetDirectoryStructure(objPreferences['tSaveDirectory'], '*.*', true),
sFile = '', sFilePath = '';
for (var i=0, len=aFiles.length; i<len; ++i) {
sFile = aFiles[i];
if (Image_Regex.test(sFile))
_win32.DeleteFileW(sFile);
}
RefreshScreenshotViewerList();
_win32.EnableWindow(pPlusWnd.GetControlHandle('lnkDeleteAll'), true);
break;
}
}
function OnScreenshotViewerEvent_LstViewSelStateChanged(pPlusWnd, sControlId, nItemIdx, bSelectedState) {
if (nItemIdx !== -1 && !bSelectedState) return;
_debug.getfuncname(arguments);
if (LstView_GetSelectedCount(pPlusWnd, 'LvFiles') > 1 || nItemIdx === -1 ) {
pPlusWnd.ImageElmt_SetImageFile('ImgPreview', 'no_image.png');
ScreenshotViewer_SetControlState(pPlusWnd, 0, false);
ScreenshotViewer_SetSidebarControlState(pPlusWnd,
nItemIdx,
LstView_GetSelectedCount(pPlusWnd, 'LvFiles'));
return false;
}
ScreenshotViewer_SetControlState(pPlusWnd,
(nItemIdx !== -1 ? _win32._const._SW_SHOW : _win32._const._SW_HIDE),
(nItemIdx !== -1 ? true /* SW_SHOW */ : false /* SW_HIDE */));
ScreenshotViewer_SetSidebarControlState(pPlusWnd,
nItemIdx,
LstView_GetSelectedCount(pPlusWnd, 'LvFiles'));
var oGdip = new Gdip();
oGdip.Initialize();
sImageName = pPlusWnd.LstView_GetItemText('LvFiles', nItemIdx, 0);
pPlusWnd.SetControlText('lblImageName', sImageName);
pPlusWnd.SetControlText('lblImageSize', _lang.text['ScreenshotViewer_Size'] + ' '
+ oGdip.FormatFileSize(oGdip.GetImageSizeInBytes(objPreferences['tSaveDirectory']+ '\\' + sImageName)));
pPlusWnd.SetControlText('lblImageDimensions', _lang.text['ScreenshotViewer_Dimensions'] + ' '
+ oGdip.GetImageDimensions(objPreferences['tSaveDirectory']+ '\\' + sImageName));
pPlusWnd.SetControlText('lblImageCreated', _lang.text['ScreenshotViewer_DateCreated'] + ' '
+ oGdip.GetDateCreated(objPreferences['tSaveDirectory']+ '\\' + sImageName));
pPlusWnd.ImageElmt_SetImageFile('ImgPreview', '\\' + objPreferences['tSaveDirectory'] + sImageName);
oGdip.Uninitialize();
}
function OnScreenshotViewerEvent_MessageNotification(pPlusWnd, nMessage, wParam, lParam) {
switch (nMessage) {
case _win32._const._WM_SIZE:
if (wParam === _win32._const._SIZE_MAXIMIZED) {
_win32.ShowWindow(pPlusWnd.GetControlHandle('BaseBtnMinimise'), _win32._const._SW_SHOW);
_win32.ShowWindow(pPlusWnd.GetControlHandle('BaseBtnMaximise'), _win32._const._SW_SHOW);
_win32.ShowWindow(pPlusWnd.GetControlHandle('BaseBtnCancel'), _win32._const._SW_SHOW);
}
break;
}
}
function OnScreenshotViewerEvent_Destroyed(pPlusWnd, nExitCode) {
if (nExitCode !== 6) {
CloseWindow(pPlusWnd.WindowId);
return false;
}
}
function ScreenshotViewer_SetControlState(pPlusWnd, nShowCode, bEnable) {
var aControls = ['lblImageName','lblImageSize','lblImageDimensions','lblImageCreated','lnkViewImage'],
bDoShow = (typeof nShowCode !== TYPE_UNDEFINED),
bDoEnable = (typeof bEnable !== TYPE_UNDEFINED),
i = aControls.length, hWnd;
if (bDoShow || bDoEnable) {
//Super fast reverse while loop!
while (i--) {
hWnd = pPlusWnd.GetControlHandle(aControls[i]);
if(bDoShow) _win32.ShowWindow(hWnd, nShowCode);
if(bDoEnable) _win32.EnableWindow(hWnd, bEnable);
}
}
}
function ScreenshotViewer_SetSidebarControlState(pPlusWnd, nItemIdx, nItemCount) {
var aControls = ['lnkSendImage','lnkCopyClipboard','lnkConvertImage','lnkEditImage','lnkDeleteImage'],
i = aControls.length, hWnd, bEnable = (nItemIdx !== -1);
while (i--) {
hWnd = pPlusWnd.GetControlHandle(aControls[i]);
_win32.EnableWindow(hWnd, bEnable);
}
}