Skip to content

Commit 533d56f

Browse files
authored
Merge pull request #7 from qianmoQ/dev-25.0.0
feat (core): 拆分独立组件
2 parents bbc5890 + 2853007 commit 533d56f

7 files changed

Lines changed: 233 additions & 194 deletions

File tree

src/App.vue

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,14 @@
3939
<!-- 状态栏 -->
4040
<StatusBar :env-info="envInfo" :execution-time="lastExecutionTime" :code-length="code.length"/>
4141

42-
<!-- 通知信息 -->
43-
<Toast v-if="toast.show"
44-
:show="toast.show"
45-
:message="toast.message"
46-
:type="toast.type"
47-
:duration="3000"
48-
:show-progress="true"
49-
@close="toast.show = false">
50-
</Toast>
51-
5242
<!-- 关于组件 -->
5343
<About v-if="showAbout" @close="closeAbout"/>
5444

5545
<!-- 设置组件 -->
5646
<Settings v-if="showSettings" @close="closeSettings"/>
47+
48+
<!-- Toast 组件 -->
49+
<Toast/>
5750
</div>
5851
</template>
5952

@@ -65,9 +58,10 @@ import AppHeader from './components/AppHeader.vue'
6558
import CodeEditor from './components/CodeEditor.vue'
6659
import OutputPanel from './components/OutputPanel.vue'
6760
import StatusBar from './components/StatusBar.vue'
68-
import Toast from './components/Toast.vue'
6961
import About from './components/About.vue'
7062
import Settings from './components/Settings.vue'
63+
import Toast from './components/Toast.vue'
64+
import { useToast } from './plugins/toast'
7165
7266
interface ExecutionResult
7367
{
@@ -155,6 +149,7 @@ print(f"Original: {numbers}")
155149
print(f"Squared: {squared}")`
156150
}
157151
152+
const toast = useToast()
158153
const code = ref('')
159154
const currentLanguage = ref('python2')
160155
const output = ref('')
@@ -183,16 +178,6 @@ const envInfo = ref<EnvInfo>({
183178
language: 'python'
184179
})
185180
186-
const toast = ref({
187-
show: false,
188-
message: '',
189-
type: 'success' as 'success' | 'error' | 'info'
190-
})
191-
192-
const showToast = (message: string, type: 'success' | 'error' | 'info' = 'success') => {
193-
toast.value = { show: true, message, type }
194-
}
195-
196181
const getLanguageDisplayName = (languageValue: string) => {
197182
const language = supportedLanguages.value.find(lang => lang.value === languageValue)
198183
return language ? language.name : languageValue
@@ -256,12 +241,12 @@ print("Hello from ${ getLanguageDisplayName(newLanguage) }!")`
256241
// 刷新环境信息
257242
await refreshEnvInfo()
258243
259-
showToast(`已切换到 ${ getLanguageDisplayName(newLanguage) }`, 'info')
244+
toast.info(`已切换到 ${ getLanguageDisplayName(newLanguage) }`)
260245
}
261246
262247
const runCode = async () => {
263248
if (!envInfo.value.installed) {
264-
showToast(`${ envInfo.value.language } 环境未安装`, 'error')
249+
toast.error(`${ envInfo.value.language } 环境未安装`)
265250
return
266251
}
267252
@@ -284,16 +269,16 @@ const runCode = async () => {
284269
if (result.stderr) {
285270
output.value += '\n' + result.stderr
286271
}
287-
showToast(`代码执行成功,用时 ${ result.execution_time } 毫秒`)
272+
toast.success(`代码执行成功,用时 ${ result.execution_time } 毫秒`)
288273
}
289274
else {
290275
output.value = result.stderr || '代码执行失败 (无输出)'
291-
showToast('代码执行失败,查看输出的错误信息', 'error')
276+
toast.error('代码执行失败,查看输出的错误信息')
292277
}
293278
}
294279
catch (error) {
295280
output.value = `代码执行失败: ${ error }`
296-
showToast('代码执行失败,请检查日志', 'error')
281+
toast.error('代码执行失败,请检查日志')
297282
}
298283
finally {
299284
isRunning.value = false
@@ -302,7 +287,7 @@ const runCode = async () => {
302287
303288
const clearOutput = () => {
304289
output.value = ''
305-
showToast('输出已清空', 'info')
290+
toast.info('输出已清空')
306291
}
307292
308293
window.addEventListener('contextmenu', (e) => e.preventDefault(), false)
@@ -340,4 +325,4 @@ onUnmounted(() => {
340325
unlistenSettingsFn()
341326
}
342327
})
343-
</script>
328+
</script>

src/components/Settings.vue

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,9 @@ import { open as openDialog } from '@tauri-apps/plugin-dialog'
138138
import { openPath } from '@tauri-apps/plugin-opener'
139139
import { FileText, Folder, Settings2, X } from 'lucide-vue-next'
140140
import Select from '../ui/Select.vue'
141+
import { useToast } from '../plugins/toast'
141142
143+
const toast = useToast()
142144
const isVisible = ref(false)
143145
const currentLogDir = ref('')
144146
const newLogDir = ref('')
@@ -205,12 +207,11 @@ const applyLogDirChange = async () => {
205207
await invoke('set_log_directory', { path: newLogDir.value })
206208
currentLogDir.value = newLogDir.value
207209
await loadLogFiles()
208-
// 这里可以显示成功提示
209-
console.log('日志目录已更新')
210+
toast.success('日志目录已更新')
210211
}
211212
catch (error) {
212213
console.error('Failed to set log directory:', error)
213-
// 这里可以显示错误提示
214+
toast.error('日志目录更新失败, 错误信息: ' + error)
214215
}
215216
}
216217
@@ -228,10 +229,11 @@ const resetLogDirectory = async () => {
228229
await invoke('reset_log_directory')
229230
await loadLogDirectory()
230231
await loadLogFiles()
231-
console.log('日志目录已重置为默认')
232+
toast.success('日志目录已重置为默认')
232233
}
233234
catch (error) {
234235
console.error('Failed to reset log directory:', error)
236+
toast.error('日志目录重置失败, 错误信息: ' + error)
235237
}
236238
}
237239
@@ -249,10 +251,11 @@ const clearLogs = async () => {
249251
try {
250252
await invoke('clear_logs', { keepDays: parseInt(keepDays.value.toString()) })
251253
await loadLogFiles()
252-
console.log(`已清理 ${ keepDays.value } 天前的日志`)
254+
toast.success(`已清理 ${ keepDays.value } 天前的日志`)
253255
}
254256
catch (error) {
255257
console.error('Failed to clear old logs:', error)
258+
toast.error('清理日志失败, 错误信息: ' + error)
256259
}
257260
}
258261

0 commit comments

Comments
 (0)