From 0389f52653ff40b6bc25489e628a669d6f7d1d94 Mon Sep 17 00:00:00 2001 From: shadowcz007 Date: Wed, 31 May 2023 20:20:14 +0800 Subject: [PATCH] 5-31 --- assets/TrayTemplate.png | Bin 0 -> 1100 bytes assets/TrayTemplate@2x.png | Bin 0 -> 2140 bytes assets/icons/TrayTemplate.png | Bin 0 -> 1100 bytes assets/icons/TrayTemplate@2x.png | Bin 0 -> 2140 bytes package-lock.json | 15 +- package.json | 1 + release/app/package-lock.json | 4 +- src/main/libs/ipc.js | 63 +++++- src/main/libs/popWindow.js | 6 + src/main/main.ts | 153 ++++++++++++-- src/main/util.ts | 7 +- src/main/watchSelection.js | 18 +- src/renderer/App.jsx | 4 +- src/renderer/assets/baidu.ico | Bin 0 -> 16958 bytes src/renderer/assets/baidu.jpg | Bin 0 -> 19456 bytes src/renderer/assets/chrome-icon.png | Bin 0 -> 9585 bytes src/renderer/assets/g-logo.png | Bin 0 -> 1771 bytes .../components/chatbot/ChatBotInput.tsx | 32 ++- .../components/chatbot/ChatBotSelect.tsx | 16 +- src/renderer/pages/content/Main.tsx | 2 + src/renderer/pages/popWindow/index.css | 184 ++++++++++++++++ src/renderer/pages/popWindow/index.js | 200 ++++++++++++++++++ 22 files changed, 661 insertions(+), 44 deletions(-) create mode 100644 assets/TrayTemplate.png create mode 100644 assets/TrayTemplate@2x.png create mode 100644 assets/icons/TrayTemplate.png create mode 100644 assets/icons/TrayTemplate@2x.png create mode 100644 src/main/libs/popWindow.js create mode 100644 src/renderer/assets/baidu.ico create mode 100644 src/renderer/assets/baidu.jpg create mode 100644 src/renderer/assets/chrome-icon.png create mode 100644 src/renderer/assets/g-logo.png create mode 100644 src/renderer/pages/popWindow/index.css create mode 100644 src/renderer/pages/popWindow/index.js diff --git a/assets/TrayTemplate.png b/assets/TrayTemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..0841ae5403ec8ca5b3baf52c72cd9060b2f1e18e GIT binary patch literal 1100 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=IjczVPIhV7vK}(%Al&rsHVlBqQRi74kA@Gnbft#UEQVJ zy_hs~fNX>mNLB;LRSl0+kBZTVj@68gRga2Qi;B^TiQ_glw&hzos%poYTI-S$ zUNcLp(vs}S-Luxrt(-N_qsZpsv66Rs;JJEtB01FxH~h*tF(2LFIYKk-PVOg#i= z*d#aKtgzU+sAS=~IoA#@KCp4x`J*c%8>_iYEO^W;&5MiUx?8)JOv{|qWm8pUQdF!K z0SwZ3^TJ}sy4w7yJ#}*?hPF0X78Y8Tlvq_)TUAwCRa9A3R9ci**i=?=8=F}a7CF|{ z+11q808wqNZEdYXUAMB;LCLPCNI z6AurM&l#OH90$%EIdDu*Lq$hPM@36VO-1kA!IKJ#nyR|W+S=;M>lK!-SfX=q!J<{m z)~!=qzH;T#wTo9T&p)srDI+B(DJyMVZenI?ZgTeVg!d0#JbAO|>8oe&9=?3~_VMWl z&*cRqL}Y}d#N-4eMP(nKP7sh5pFd&7lsS`TO`A7y=G3zjCeNN89}p1|6BHE|7Z@3O zHXt}U{QiX-SMFT8b?x58o2ds9F61t}eEIh6>+fI9vPo3BFwJxFa-X?owa3mx8mFHx zn`>My$9(+{E4P?ll+L!4i}pI^x)aUr_GFYadM1oCGVLTtn?hVclR(Y2L^y@ ziEBhjN@7W>RdP`(kYX@0Ff!IPFx53O4ly*gGBmR?HPbdQure?({9he|q9HdwB{QuO ww+4qrhaUhnXuxeK$;?eHE=kNSK-Xh#WnclZzopr0J)l!wEzGB literal 0 HcmV?d00001 diff --git a/assets/TrayTemplate@2x.png b/assets/TrayTemplate@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..98df4a8b35f41487445bf683c2c14148b50892bb GIT binary patch literal 2140 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 literal 0 HcmV?d00001 diff --git a/assets/icons/TrayTemplate@2x.png b/assets/icons/TrayTemplate@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..98df4a8b35f41487445bf683c2c14148b50892bb GIT binary patch literal 2140 zcmZ{lcTm#{632hE5ZVw*fPhiKM-_w+cuIK+m|!q~R4EFf7wHCpfCwrj(gdUvB2797 zLg-ZzK!`+&k0Js-dY2}GD2H=1H*+(0v$Ol1{qB5b|J!|LWO##zQ-=0pNiW0Ib>pfO-Z12>X(njWtgPAP4LX z6mar8a@&euoH`u77%Myga0&cQCLoI>a%!^s>lvWgm)L}P_@p(fo#sy+X+4y-nPoRE z%_h#=0@@qqu@Sn-9tes$l=FAVeap?w=};4Con@5oW$?3;iZbxhR~3!tl@g7=CHkVL zSgJ_Z@nKmhLiOrsbdQ}wrRwnH%~Tz|JMH&UVIWR!Iy*h5>0rI>;rJ36#*cFkynoGb z@M=iqF79L>7Z&t9y_z7n!&Xv32)qzYNEAK0FWbmLblw{D@DLm03GY?Zv7Lz>@6Pb* z)c5xGMG#Ne$ZrR@$gRJuX8rhJ-g^~N<$r6jLbXv^x91&K25#F5VfpgWC|2Zk6hx+q ziHS)_Sg7$&WNc<=%v8H%oR@~2gvOXxdwl%d9ix{}4w=jY6o9P5P{ZBQo}8D3^O59) zc=#;)@vU+aPb>^LVjvEMZFSTM0qM*u4?swbq71LsfvV$;54hTIU(e|dd5(`M$(Nu} zSopZbch4HL85}5Y`DKw!m-70N51Vo}Iee8wwgNwZ;sT=J$X%!u?rY zk22COD$>MDSqpy}4s38BLw7ltG)$D3)3PdxJ;NWR9Z(xlG>+L&|lo^vrxtJv%=jh^G?5-{~~i(kYn$t$OLj9 zFjuGC0R3p0Xnv%i5p@)_-ZYlcsBB@vFikAjgyTN7Ia?ED#g4ho?%BSP+W9)=~X0f^bGYMpeogMCukiG2n&nkUBykl2v zQ?$4St7{r!Z_;*`(i8lS=~jK3L5xGLk>kbZ(bWOjJRV|ZZPOp%2rBGK4G%0|m!HWaxGdm(Y%)zrAnU`bj`%{ueO*OiSGHKAOUUuCjGzOI51$wEy&4N&egxLycOj<8 zF|})B@_hb#-%d&m-?gvSo)``q;O2zGu621{ zlmHMbVDu;X&CXnX$!}nZ^ZuCTxJJGA5a<2U4_`n$NdV%fh?a_tFNn^!mT{LcVvaS? z!<7NoE1HBz-l{EogSP&Uk&?DKt@Mim>CfCs%Sw+6=IUK?U&4QEb~(ckx|0M$DV@r! zA-W@{bz+aa-qx{(aAsyRxU6Dx>s8qI+YYWlP_j0n6^tbqsuV1qnU*D#)3$|iF5iY1 zoMkuT48!S7)FZ9cn2eqp7_o?HjFPB4J3Qc5E7M$5m68V z6*|HTkK>X{;`)l;+ShFjVR9s%p201OSS@t?%1Md#RIzL zTny=CU(WG2=ajI&B#MS?cG!)~cLK6s(a_<`%VI$#pYQEQLzY*qo|Z}ND`O{U8Fv$4 z2vp(uGy!o2UWZ79)QF6P#g>4pAdPPD91N(wsk)PzEuBeN;wO^$d+I}BLHekp)z3C& zYm{LD>y?O@k=t~@%HBx*Y3VNgCa-01_uIb}F3Eo&b%1=?z9%Ssd&K_DZcN?ERh99q&7z3ZSf{j8srkRZvEnA&}~b%j!tgi%LrBN=mZLEJ6PTc==8" @@ -14895,9 +14896,9 @@ } }, "node_modules/rc-util": { - "version": "5.30.0", - "resolved": "https://registry.npmmirror.com/rc-util/-/rc-util-5.30.0.tgz", - "integrity": "sha512-uaWpF/CZGyXuhQG71MWxkU+0bWkPEgqZUxEv251Cu7p3kpHDNm5+Ygu/U8ux0a/zbfGW8PsKcJL0XVBOMrlIZg==", + "version": "5.32.3", + "resolved": "https://registry.npmmirror.com/rc-util/-/rc-util-5.32.3.tgz", + "integrity": "sha512-+Pv1nOiTtmp6kpz8yZ/DToMrZHz4DIUi1/EhpIsGQhhF12jANx3rb+gsp0YUWWtxUDf6U1Eyhe0EN+mBlCJXoA==", "dependencies": { "@babel/runtime": "^7.18.3", "react-is": "^16.12.0" diff --git a/package.json b/package.json index 7c36d23..67993c6 100644 --- a/package.json +++ b/package.json @@ -95,6 +95,7 @@ } }, "dependencies": { + "@ant-design/icons": "^5.1.4", "@mozilla/readability": "^0.4.4", "antd": "^5.3.2", "axios": "^1.4.0", diff --git a/release/app/package-lock.json b/release/app/package-lock.json index 9e2f880..7ff364a 100644 --- a/release/app/package-lock.json +++ b/release/app/package-lock.json @@ -1,11 +1,11 @@ { - "name": "electron-react-boilerplate", + "name": "Earth", "version": "1.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "electron-react-boilerplate", + "name": "Earth", "version": "1.0.1", "hasInstallScript": true, "license": "MIT", diff --git a/src/main/libs/ipc.js b/src/main/libs/ipc.js index 7abc868..4e87dea 100644 --- a/src/main/libs/ipc.js +++ b/src/main/libs/ipc.js @@ -2,6 +2,7 @@ import { ipcMain, app, BrowserWindow, shell, dialog } from 'electron'; import _ from 'lodash'; import axios from 'axios'; import fs from 'fs'; + function delay(ms) { return new Promise((resolve, reject) => { setTimeout(() => { @@ -12,8 +13,15 @@ function delay(ms) { const processHandler = { async dbt_close_app() { - app.quit(); - process.exit(0); + let mainWin = BrowserWindow.fromId(global.mainWindowId); + if (!mainWin) { + return; + } + + mainWin.hide(); + + // app.quit(); + // process.exit(0); }, bing_login() { return new Promise((resolve, reject) => { @@ -104,6 +112,57 @@ const processHandler = { evt.reply('importComboBack', { data: json }); }, + dbt_pop_search(evt, data) { + let mainWin = BrowserWindow.fromId(global.mainWindowId); + if (!mainWin) { + return; + } + + mainWin.show(); + mainWin.focus(); + mainWin.webContents.send('dbt_pop_search', data); + }, + dbt_pop_typechange(evt, data) { + let mainWin = BrowserWindow.fromId(global.mainWindowId); + if (!mainWin) { + return; + } + + // mainWin.show(); + // mainWin.focus(); + mainWin.webContents.send('dbt_pop_typechange', data); + }, + dbt_main_typechange(evt, data) { + let popWin = BrowserWindow.fromId(global.popWindowId); + if (!popWin) { + return; + } + + // mainWin.show(); + // mainWin.focus(); + popWin.webContents.send('dbt_main_typechange', data); + }, + dbt_pop_close(evt, data) { + let popWin = BrowserWindow.fromId(global.popWindowId); + if (!popWin) { + return; + } + + popWin.hide(); + }, + click_through(evt, data) { + let flag = data?.flag || false; + let popWin = BrowserWindow.fromId(global.popWindowId); + if (!popWin) { + return; + } + + if (flag) { + popWin.setIgnoreMouseEvents(true, { forward: true }); + } else { + popWin.setIgnoreMouseEvents(false); + } + }, }; export default function ipc() { diff --git a/src/main/libs/popWindow.js b/src/main/libs/popWindow.js new file mode 100644 index 0000000..70f7174 --- /dev/null +++ b/src/main/libs/popWindow.js @@ -0,0 +1,6 @@ +import path from 'path'; +import { app, BrowserWindow, shell, ipcMain } from 'electron'; + + + +export default createWindow; diff --git a/src/main/main.ts b/src/main/main.ts index a03e977..3f263f8 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -9,8 +9,19 @@ * `./src/main.js` using webpack. This gives us some performance wins. */ import path from 'path'; -import { app, BrowserWindow, shell, ipcMain } from 'electron'; +import { + app, + BrowserWindow, + shell, + ipcMain, + screen, + Tray, + Menu, + globalShortcut, + nativeImage, +} from 'electron'; import { autoUpdater } from 'electron-updater'; +import { checkAccessibilityPermissions } from 'node-selection'; import watchSelection from './watchSelection'; import log from 'electron-log'; import MenuBuilder from './menu'; @@ -19,7 +30,7 @@ import ipc from './libs/ipc'; let mouseDownPos = { x: 0, y: 0 }; // 记录鼠标按下的坐标 let isMouseDown = false; -let tray = null; +let tray: any = null; class AppUpdater { constructor() { @@ -30,6 +41,7 @@ class AppUpdater { } let mainWindow: BrowserWindow | null = null; +let popWindow: BrowserWindow | null = null; ipcMain.on('ipc-example', async (event, arg) => { const msgTemplate = (pingPong: string) => `IPC test: ${pingPong}`; @@ -47,7 +59,7 @@ const isDebug = process.env.NODE_ENV === 'development' || process.env.DEBUG_PROD === 'true'; if (isDebug) { - require('electron-debug')(); + // require('electron-debug')(); } const installExtensions = async () => { @@ -63,18 +75,67 @@ const installExtensions = async () => { .catch(console.log); }; -const createWindow = async () => { +const RESOURCES_PATH = app.isPackaged + ? path.join(process.cwd(), '/resources/assets') // ? path.join(process.resourcesPath, 'assets') + : path.join(process.cwd(), '/assets'); //path.join(__dirname, '../../assets'); + +const getAssetPath = (...paths: string[]): string => { + return path.join(RESOURCES_PATH, ...paths); +}; + +const createPopWindow = async () => { + if (!(await checkAccessibilityPermissions({ prompt: true }))) { + console.log('grant accessibility permissions and restart this program'); + } + + if (!popWindow) { + let xw = screen.getPrimaryDisplay().workAreaSize.width; + + popWindow = new BrowserWindow({ + width: xw * 0.35, + height: 200, + y: 5, + icon: getAssetPath('icon.png'), + show: false, + transparent: true, + alwaysOnTop: true, + skipTaskbar: true, + resizable: false, + frame: false, + movable: true, + + webPreferences: { + preload: app.isPackaged + ? path.join(__dirname, 'preload.js') + : path.join(__dirname, '../../.erb/dll/preload.js'), + }, + }); + + global.popWindowId = popWindow.id; + popWindow.setPosition(xw * 0.325, 10); + } + if (isDebug) { - // await installExtensions(); + // popWindow.webContents.openDevTools(); + popWindow.loadURL(resolveHtmlPath('index.html', { hash: '/pop' })); + } else { + popWindow.loadFile(resolveHtmlPath('index.html', null), { hash: '/pop' }); } + popWindow.show(); - const RESOURCES_PATH = app.isPackaged - ? path.join(process.resourcesPath, 'assets') - : path.join(__dirname, '../../assets'); + // popWindow.webContents.on('did-finish-load', () => { + // console.log('did-finish-load'); + // }); - const getAssetPath = (...paths: string[]): string => { - return path.join(RESOURCES_PATH, ...paths); - }; + // popWindow.on('closed', () => { + // popWindow = null; + // }); +}; + +const createWindow = async () => { + if (isDebug) { + // await installExtensions(); + } mainWindow = new BrowserWindow({ show: false, @@ -89,7 +150,54 @@ const createWindow = async () => { }, }); - mainWindow.loadURL(resolveHtmlPath('index.html')); + global.mainWindowId = mainWindow.id; + + if (isDebug) { + mainWindow.webContents.openDevTools(); + mainWindow.loadURL(resolveHtmlPath('index.html', null)); + } else { + mainWindow.loadFile(resolveHtmlPath('index.html', null)); + } + + if (!tray) { + let icon = nativeImage.createFromDataURL( + 'data:image/png;base64,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' + ); + tray = new Tray(icon); + const contextMenu = Menu.buildFromTemplate([ + { + label: '打开搜索栏', + type: 'normal', + click: () => { + let popWin = BrowserWindow.fromId(global.popWindowId); + if (popWin) { + popWin.show(); + } + }, + }, + { + label: '退出', + type: 'normal', + click: () => { + if (app) { + app.quit(); + process.exit(0); + } + }, + }, + ]); + + tray.setContextMenu(contextMenu); + + tray.setToolTip('Earth'); + + tray.on('click', () => { + let xWindow = BrowserWindow.fromId(global.mainWindowId); + if (xWindow) { + xWindow.isVisible() ? xWindow.hide() : xWindow.show(); + } + }); + } mainWindow.on('ready-to-show', () => { if (!mainWindow) { @@ -100,12 +208,13 @@ const createWindow = async () => { } else { mainWindow.show(); } + + createPopWindow(); }); mainWindow.webContents.on('did-finish-load', () => { console.log('did-finish-load'); - watchSelection(mainWindow) - + watchSelection(mainWindow); }); mainWindow.on('closed', () => { @@ -130,8 +239,7 @@ const createWindow = async () => { * Add event listeners... */ -app.on('before-quit', () => { -}); +app.on('before-quit', () => {}); app.on('window-all-closed', () => { // Respect the OSX convention of having the application in memory even @@ -144,6 +252,19 @@ app.on('window-all-closed', () => { app .whenReady() .then(() => { + globalShortcut.register('Ctrl+Shift+M', () => { + let xWindow = BrowserWindow.fromId(global.mainWindowId); + if (xWindow) { + xWindow.isVisible() ? xWindow.hide() : xWindow.show(); + } + }); + + globalShortcut.register('Ctrl+Shift+F', () => { + let popWin = BrowserWindow.fromId(global.popWindowId); + if (popWin) { + popWin.isVisible() ? popWin.hide() : popWin.show(); + } + }); createWindow(); app.on('activate', () => { // On macOS it's common to re-create a window in the app when the diff --git a/src/main/util.ts b/src/main/util.ts index 7775eda..bd8a83b 100644 --- a/src/main/util.ts +++ b/src/main/util.ts @@ -2,12 +2,15 @@ import { URL } from 'url'; import path from 'path'; -export function resolveHtmlPath(htmlFileName: string) { +export function resolveHtmlPath(htmlFileName: string, opts: any) { if (process.env.NODE_ENV === 'development') { const port = process.env.PORT || 1212; const url = new URL(`http://localhost:${port}`); url.pathname = htmlFileName; + if (opts?.hash) { + url.hash = opts.hash; + } return url.href; } - return `file://${path.resolve(__dirname, '../renderer/', htmlFileName)}`; + return path.resolve(__dirname, '../renderer/', htmlFileName); } diff --git a/src/main/watchSelection.js b/src/main/watchSelection.js index 9d9e199..65a5db5 100644 --- a/src/main/watchSelection.js +++ b/src/main/watchSelection.js @@ -9,16 +9,14 @@ function delay(ms) { } async function wa(modalWindow) { - if (await checkAccessibilityPermissions({ prompt: true })) { - let res = await getSelection().catch((e) => e); - // 如果当前主窗口是显示的 则往住窗口发数据 否则显示menu弹窗 - if (res?.text) { - const { text } = res; - modalWindow.webContents.send('win_selection_txt', { - text, - code: 200, - }); - } + let res = await getSelection().catch((e) => e); + // 如果当前主窗口是显示的 则往住窗口发数据 否则显示menu弹窗 + if (res?.text) { + const { text } = res; + modalWindow.webContents.send('win_selection_txt', { + text, + code: 200, + }); } await delay(500); diff --git a/src/renderer/App.jsx b/src/renderer/App.jsx index 6d409b1..607530a 100644 --- a/src/renderer/App.jsx +++ b/src/renderer/App.jsx @@ -1,8 +1,9 @@ import React, { useEffect } from 'react'; -import { MemoryRouter as Router, Routes, Route } from 'react-router-dom'; +import { HashRouter as Router, Routes, Route } from 'react-router-dom'; import { getConfigFromUrl } from '@/components/Utils'; import Main from './pages/content/Main'; +import PopWindow from './pages/popWindow'; import backgroundHandle from './pages/background'; import './App.css'; @@ -22,6 +23,7 @@ export default function App() { return ( + } /> 5~*S6d#Hz{15!99}#av1Vmf`6$AxE1Vy1JP*J>4E;+2FKrBlw5Lpfp6%P;! z2X?w$LYUoUAgGkv7z*d4&Pl})CTyu4pJd3ni8+iacK zUsaWj{lC)IwZF}Fxy@$l$^v_2t7ZYu6{>2BjQ$f*Hx?GLP|HGyg$td40a$>kn;v$S z*M)@|7Sb$StORVp*hTCI{AOVf3zrH3tJ()FjXt^5s0L$zfyR8ln8&={dj)2$>-5SP zK2HY&6y5y|`Ij!DrUkE1)BL&A^5$z4cyBp{zt}>t-+rZZz;DPyFEicJLb1cYPUXj@14}L7%nZ&6RhHavK57S%FX)=_H!B;(- zGO?IURf^UAWhzU`RWHR$wh-1Iv5#}pezx9OArZgxo&l6@ZI!MrgFm?TBWZpz1sf-h z)y3}`HJmcZWFDJLB2Hx$Kl(ShA00_`J+4;kxW|poDkI|euU?sz*R*h+T91#jq|2$6k-^`P)1F$n zz=U&P-#nQho1NJKnN&*UnqoGa{w!e)=Rq7X&wcri94eU0Liz{hzDCJfA73L!2UD*)pluC<-qT}yI?@Z5pN{t`qB{)-QFTx(vJ@P)yK2Yby&DT)fE!QcbVZvisqKWt&Y&_Ku z8>EIh)MI@q2ItU$YQA&u9a(wqF%K$dNLdZE!w={K-^>@YWD#W+)46tnh+iycHQj{0 zL!x~1U8WlY?=Ca#gHq$Sv%N)-odZ+~MRt5a_FMGNLQ9F?(dR~re!II;psRAkemO{v z+k0w`g;L>n4(LPizy4I)th7Y@$RF%X`lh@-a6SA0B^`D(XxWHnb02GL;^grTgAAP? zW;R`D-NzK(zLipL?K7s>p`QuokY;$Sb z;J!K2HEnJ9eyrd#E2}l%;aBobdp@rn=tk`S;9Dt{;Dd4vyF0H9QQn5}j}QrGAiPcA ztf_|eL>@+I_;+#%XQi-pjq1TZDRv(OUz<@IJWp#a%7j8x&+HanrjXb*VyNc1uz$rn zQhZw$zmeN@(!X(zhp{9hw|mS8O}=qbemz~+4$$!siu`qqs z#Lnb7ADKAS*r3TXym_M~KD;gXPqYYjJ})B^x4iY578}!NE@qR<@aJWs%-5qwVdm43 z9S2xHBRhBKu_EYr-lj~9{XroFJ4=Q?FB9Ff)36!LCo>;f|H`EVn+Rv6&O2`-&vTOqGRqL|M`1kSj1f8*dIsUA3XJB!gI_K z**1;jf^Dle-yj?Ca*F?bg!Fu+kO_LBR4OD@gkDv*(a^lpF2~m-r;GZb(>=rW2{*s z;cmN_ZlOmzLy5d6A&c%rJ}jtq1mt)jK?m?+~=^1&A{9G}f=Y_3y+n zY5cGQDIV`|%(()OVRyN)U&Y=GXQKqXDbGCzV8=ILB^^{c zT~ld~fm!(;mc=!dCR{tnqkR8(?i@H1?a}o ztc{FO2NGZ76kR7`MLO2@;EJLfte{5# literal 0 HcmV?d00001 diff --git a/src/renderer/assets/baidu.jpg b/src/renderer/assets/baidu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..894e20a4c63321800ab534c1297cf0e4962e7461 GIT binary patch literal 19456 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 N002ovPDHLkV1fkhT8IDu literal 0 HcmV?d00001 diff --git a/src/renderer/components/chatbot/ChatBotInput.tsx b/src/renderer/components/chatbot/ChatBotInput.tsx index 7e825b8..4e13537 100644 --- a/src/renderer/components/chatbot/ChatBotInput.tsx +++ b/src/renderer/components/chatbot/ChatBotInput.tsx @@ -98,6 +98,11 @@ class ChatBotInput extends React.Component { 'win_selection_txt', this.handleSelection.bind(this) ); + + this.popFn = window.electron.ipcRenderer.on( + 'dbt_pop_search', + this.handlePopSearch + ); } componentDidUpdate(prevProps: any, prevState: any) { @@ -118,14 +123,35 @@ class ChatBotInput extends React.Component { if (this.ipcFn) { this.ipcFn(); } + + if (this.popFn) { + this.popFn(); + } } + handlePopSearch = (data: any) => { + if (!data?.text) { + return; + } + + this.setState( + { + userInput: { + prompt: data?.text, + tag: data?.text, + }, + }, + () => { + this._sendBtnClick(); + } + ); + }; + handleSelection(data: any) { const text = data?.text || ''; this.setState({ - placeholder: - text.length > 0 ? text.trim() : 'Ask or search anything', + placeholder: text.length > 0 ? text.trim() : 'Ask or search anything', userSelected: text.length > 0, }); } @@ -177,6 +203,8 @@ class ChatBotInput extends React.Component { }, combo: -1, }; + + console.log('userInputuserInputuserInput', userInput, combo); this.props.callback({ cmd: 'send-talk', data: { diff --git a/src/renderer/components/chatbot/ChatBotSelect.tsx b/src/renderer/components/chatbot/ChatBotSelect.tsx index 5d06cfa..8c2a210 100644 --- a/src/renderer/components/chatbot/ChatBotSelect.tsx +++ b/src/renderer/components/chatbot/ChatBotSelect.tsx @@ -112,7 +112,10 @@ class ChatBotSelect extends React.Component { } componentDidMount() { - console.log('ChatBotSelect componentDidMount'); + this.popFn = window.electron.ipcRenderer.on( + 'dbt_pop_typechange', + this.handleTypeChange + ); } componentDidUpdate(prevProps: { isLoading: boolean }, prevState: any) { @@ -123,12 +126,21 @@ class ChatBotSelect extends React.Component { } } - componentWillUnmount() {} + componentWillUnmount() { + if (this.popFn) { + this.popFn(); + } + } + + handleTypeChange = (data) => { + this._onChange(data.type); + }; _onChange(type: string) { this.setState({ type, }); + window.electron.ipcRenderer.send('dbt_main_typechange', { type }); const { label, value } = this._updateStyle(type); diff --git a/src/renderer/pages/content/Main.tsx b/src/renderer/pages/content/Main.tsx index 664bc53..54c5048 100644 --- a/src/renderer/pages/content/Main.tsx +++ b/src/renderer/pages/content/Main.tsx @@ -315,6 +315,7 @@ class Main extends React.Component< this.initChatBot(); } } + getNotionPrompts = (data, x) => { let xData = comboParse(data.results) || []; comboDataUpdate(xData); @@ -1346,6 +1347,7 @@ class Main extends React.Component< return ( img { + flex-grow: 0; + flex-shrink: 0; + margin-right: 4px; + } +} +.dbt_drop { + pointer-events: auto; +} + +.dbt_drop .ant-dropdown-menu-item:focus { + border: none !important; + outline: none !important; + box-shadow: none !important; +} + +.dbt_drop .ant-dropdown-menu-item:active { + border: none; + outline: none; + box-shadow: none; +} + +.dbt_drop .ant-dropdown-menu-item:hover { + border: none; + box-shadow: none; + outline: none; +} + +.send-img { + -webkit-app-region: no-drag; + background: none; + + color: #333; + flex-grow: 0; + flex-shrink: 0; + font-size: 24px; + width: 24px; + cursor: pointer; +} + +.btn-send { + -webkit-app-region: no-drag; + background: none; + + color: #333; + flex-grow: 0; + flex-shrink: 0; + font-size: 24px; + cursor: pointer; +} + +.popPage .btn-send:focus { + border: none !important; + outline: none !important; + box-shadow: none !important; +} + +.popPage .btn-send:active { + border: none; + outline: none; + box-shadow: none; +} + +.popPage .btn-send:hover { + border: none; + box-shadow: none; + outline: none; +} + +.btn-more { + margin-left: 10px; + color: #999; +} +.close-img { + margin-right: 5px; +} diff --git a/src/renderer/pages/popWindow/index.js b/src/renderer/pages/popWindow/index.js new file mode 100644 index 0000000..755640b --- /dev/null +++ b/src/renderer/pages/popWindow/index.js @@ -0,0 +1,200 @@ +import React, { useState, useEffect } from 'react'; +import { Input, Dropdown, Space } from 'antd'; +import { + DownOutlined, + RightCircleOutlined, + MoreOutlined, + CloseCircleOutlined, +} from '@ant-design/icons'; +import './index.css'; + +import bingSvg from '@/assets/bing.svg'; +import chatgptPng from '@/assets/chatgpt.png'; +import chromePng from '@/assets/g-logo.png'; +import baiduLogo from '@/assets/baidu.jpg'; +import logoicon from '@/assets/logo.png'; + +export default function PopWindow() { + const [keyword, setKeyword] = useState(''); + const [isFocus, setFocus] = useState(''); + const [isMoving, setMoving] = useState(false); + const [selectedId, setSelectedId] = useState('ChatGPT'); + + useEffect(() => { + // 与主窗口同步数据 + window.electron.ipcRenderer.send('dbt_pop_typechange', { + type: selectedId, + }); + let fn = window.electron.ipcRenderer.on('dbt_main_typechange', (evt) => { + if (evt?.type) { + setSelectedId(evt?.type); + } + }); + + function handleMove(event) { + let flag = event.target === document.documentElement; + window.electron.ipcRenderer.send('click_through', { flag }); + } + + window.addEventListener('mousedown', () => { + setMoving(true); + }); + window.addEventListener('mousemove', handleMove); + window.addEventListener('mouseup', () => { + setMoving(false); + }); + return () => { + if (fn) { + fn(); + } + window.removeEventListener('mousemove', handleMove); + window.removeEventListener('mousemove', handleMove); + }; + }, []); + + let imgMap = { + Bing: bingSvg, + Google: chromePng, + Baidu: baiduLogo, + ChatGPT: chatgptPng, + }; + const items = [ + { + label: ( +
+  + ChatGPT +
+ ), + key: 'ChatGPT', + }, + { + label: ( +
+  Bing +
+ ), + key: 'Bing', + }, + { + label: ( +
+  + Google +
+ ), + key: 'Google', + }, + { + label: ( +
+  + Baidu +
+ ), + key: 'Baidu', + }, + ]; + + const menus = [ + { + label:
快捷键:CTRL+SHIFT+F
, + key: 'shortcut', + }, + { + label: ( +
+ + 关闭搜索栏 +
+ ), + key: 'close', + }, + ]; + + const handleChange = (evt) => { + setKeyword(evt.target.value); + }; + + const handleSend = (e) => { + if (!keyword || !keyword.trim()) { + return; + } + if (selectedId === 'Baidu') { + let url = `https://www.baidu.com/s?wd=${keyword}`; + window.electron.ipcRenderer.send('open_url', { + url, + }); + } else if (selectedId === 'Google') { + let url = `https://www.google.com/search?q=${keyword}`; + window.electron.ipcRenderer.send('open_url', { + url, + }); + } else { + window.electron.ipcRenderer.send('dbt_pop_search', { + text: keyword, + type: selectedId, + }); + } + + setKeyword(''); + }; + + const handleItemClick = (evt) => { + setSelectedId(evt.key); + if (['Baidu', 'Google'].indexOf(evt.key) >= 0) { + return; + } + window.electron.ipcRenderer.send('dbt_pop_typechange', { + type: evt.key, + }); + }; + + const handleMenuClick = (evt) => { + if (evt.key !== 'close') { + return; + } + setTimeout(() => { + window.electron.ipcRenderer.send('dbt_pop_close'); + }, 350); + }; + + return ( +
+
+ +
+ + +
+
+
+ setFocus(true)} + onBlur={() => setFocus(false)} + onPressEnter={handleSend} + placeholder={`Search by ${selectedId}`} + /> + + + + + +
+ ); +}