Files

54 lines
2.0 KiB
Go

// Copyright (c) 2026 Storm Dragon
// Authors: Storm Dragon, Angus Kola
// SPDX-License-Identifier: GPL-3.0-or-later
package preferences
/*
#include <stdlib.h>
#include "native.h"
*/
import "C"
import (
"unsafe"
"git.stormux.org/storm/cthulhu/internal/config"
)
func setOCRValues(value config.OCRSettings) {
id, content := C.CString("ocrLanguageEntry"), C.CString(value.Language)
C.prefs_entry_set(id, content)
C.free(unsafe.Pointer(id))
C.free(unsafe.Pointer(content))
setCombo("ocrLayoutCombo", map[int]int{3: 0, 6: 1, 11: 2}[value.Layout])
setSpin("ocrScaleSpinButton", float64(value.Scale))
setCheck("ocrGrayscaleCheckButton", value.Grayscale)
setCheck("ocrInvertCheckButton", value.Invert)
setCheck("ocrBlackWhiteCheckButton", value.BlackWhite)
setSpin("ocrBlackWhiteValueSpinButton", float64(value.Threshold))
setCheck("ocrAutoRefreshCheckButton", value.AutoRefresh)
setSpin("ocrRefreshIntervalSpinButton", float64(value.RefreshInterval))
setCheck("ocrConfirmClickCheckButton", value.ConfirmClick)
setCheck("ocrCopyToClipboardCheckButton", value.CopyFirstResult)
setCheck("ocrAutoReadAllCheckButton", value.AutoReadAll)
}
func getOCRValues() config.OCRSettings {
id := C.CString("ocrLanguageEntry")
language := C.GoString(C.prefs_entry_get(id))
C.free(unsafe.Pointer(id))
layout := 3
if index := getCombo("ocrLayoutCombo"); index >= 0 && index < 3 {
layout = []int{3, 6, 11}[index]
}
return config.OCRSettings{
Language: language, Layout: layout, Scale: int(getSpin("ocrScaleSpinButton")),
Grayscale: getCheck("ocrGrayscaleCheckButton"), Invert: getCheck("ocrInvertCheckButton"),
BlackWhite: getCheck("ocrBlackWhiteCheckButton"), Threshold: int(getSpin("ocrBlackWhiteValueSpinButton")),
AutoRefresh: getCheck("ocrAutoRefreshCheckButton"), RefreshInterval: int(getSpin("ocrRefreshIntervalSpinButton")),
ConfirmClick: getCheck("ocrConfirmClickCheckButton"), CopyFirstResult: getCheck("ocrCopyToClipboardCheckButton"),
AutoReadAll: getCheck("ocrAutoReadAllCheckButton"),
}
}