You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
2.9 KiB
124 lines
2.9 KiB
import { BrowserWindow, dialog } from 'electron'; |
|
import { readFile, writeFile } from 'node:fs'; |
|
import { ICON, WEB_URL, WIN_CONFIG, preload, url } from '../main/constant'; |
|
import { getImgsByImgUrl } from '../main/utils'; |
|
|
|
let viewImageWin: BrowserWindow | null = null; |
|
|
|
function createViewImageWin(search?: any): BrowserWindow { |
|
viewImageWin = new BrowserWindow({ |
|
title: '图片', |
|
icon: ICON, |
|
frame: WIN_CONFIG.viewImage.frame, |
|
autoHideMenuBar: WIN_CONFIG.viewImage.autoHideMenuBar, // 自动隐藏菜单栏 |
|
webPreferences: { |
|
preload, |
|
}, |
|
}); |
|
|
|
const imgUrl = search?.imgUrl || ''; |
|
const recordId = search?.recordId || ''; |
|
// viewImageWin.webContents.openDevTools(); |
|
if (url) { |
|
viewImageWin.loadURL( |
|
WEB_URL + |
|
`viewImage.html?${imgUrl ? 'imgUrl=' + imgUrl : ''}${ |
|
recordId ? 'recordId=' + recordId : '' |
|
}`, |
|
); |
|
// Open devTool if the app is not packaged |
|
} else { |
|
viewImageWin.loadFile(WIN_CONFIG.viewImage.html, { |
|
search: `?${imgUrl ? 'imgUrl=' + imgUrl : ''}${recordId ? 'recordId=' + recordId : ''}`, |
|
}); |
|
} |
|
|
|
return viewImageWin; |
|
} |
|
|
|
function openViewImageWin(search?: any) { |
|
if (!viewImageWin || viewImageWin?.isDestroyed()) { |
|
viewImageWin = createViewImageWin(search); |
|
} |
|
viewImageWin.show(); |
|
} |
|
|
|
function closeViewImageWin() { |
|
if (!(viewImageWin && viewImageWin.isDestroyed())) { |
|
viewImageWin?.close(); |
|
} |
|
viewImageWin = null; |
|
} |
|
|
|
function destroyViewImageWin() { |
|
viewImageWin?.destroy(); |
|
viewImageWin = null; |
|
} |
|
|
|
function hideViewImageWin() { |
|
viewImageWin?.hide(); |
|
} |
|
|
|
function minimizeViewImageWin() { |
|
viewImageWin?.minimize(); |
|
} |
|
|
|
function maximizeViewImageWin() { |
|
viewImageWin?.maximize(); |
|
} |
|
|
|
function unmaximizeViewImageWin() { |
|
viewImageWin?.unmaximize(); |
|
} |
|
|
|
function getIsAlwaysOnTopViewImageWin() { |
|
return viewImageWin?.isAlwaysOnTop(); |
|
} |
|
|
|
function setIsAlwaysOnTopViewImageWin(isAlwaysOnTop: boolean) { |
|
viewImageWin?.setAlwaysOnTop(isAlwaysOnTop); |
|
return isAlwaysOnTop; |
|
} |
|
|
|
async function getImgs(imgUrl: any) { |
|
let imgs = await getImgsByImgUrl(imgUrl); |
|
return imgs; |
|
} |
|
|
|
async function downloadImg(imgUrl: any) { |
|
let defaultPath = `pear-rec_${+new Date()}.png`; |
|
let res = await dialog.showSaveDialog({ |
|
defaultPath: defaultPath, |
|
filters: [{ name: 'Images', extensions: ['png', 'jpg', 'gif'] }], |
|
}); |
|
if (!res.canceled) { |
|
readFile(imgUrl, (err, imgData) => { |
|
if (err) { |
|
console.error(err); |
|
} else { |
|
writeFile(res.filePath, imgData, (err) => { |
|
if (err) { |
|
console.error(err); |
|
} else { |
|
console.log(`${defaultPath}:图片保存成功`); |
|
} |
|
}); |
|
} |
|
}); |
|
} |
|
return imgUrl; |
|
} |
|
|
|
export { |
|
closeViewImageWin, |
|
createViewImageWin, |
|
downloadImg, |
|
getImgs, |
|
getIsAlwaysOnTopViewImageWin, |
|
hideViewImageWin, |
|
maximizeViewImageWin, |
|
minimizeViewImageWin, |
|
openViewImageWin, |
|
setIsAlwaysOnTopViewImageWin, |
|
unmaximizeViewImageWin, |
|
};
|
|
|