Showing posts with label celoteh. Show all posts
Showing posts with label celoteh. Show all posts

Wednesday, November 11, 2020

Kenapa ngerubah nilai golang ( gui ) itu lama?

dapet chat dari C# junior developer.
"Bang, kenapa cuma nambahin fungsi Limiter(INTEGER) kenapa 2 jam sih?"

Okay sebagai programmer c#, aku tahu kok ngasih limiter itu tinggal drag and drop numericupdown lalu bind dengan app data (automatic ), and youre done ( 5 menit paling lama)

Oke, tak breakdown satu persatu di golang.

Konsepnya adalah CLIENT ngerubah nilai limiter ( di program ), dan otomatis ke save dan berubah tiap program di eksekusi.

Di golang.
GUI:
di golang kamu bikin dulu gui nya, aku gunain lxn/walk, tentuin ukurannya columnspan, lalu build and test ( berkali2), karena nggak ada VISUAL DESIGNER di golang ( kecuali pake qt, tapi karena itu harus compiling sendiri dsbnya. RIBET (baca males)).

done dengan urusan GUI.

 

STRUCT
=================
create struct untuk nyimpan baca dan simpen valuenya

type DelayApp struct {
    DelayMsg    int `json:"delayMsg"`
    DelayPerRun int `json:"delayPerRun"`
    DelaySmart  int `json:"delaySmart"`
}

 

lalu create function

READ delay
=================


func readDelayApp() DelayApp {
    var delayapp DelayApp
    filename := "delayapp.json"

    //filename is the path to the json config file
    file, _ := os.Open(filename)
    byteValue, _ := ioutil.ReadAll(file)
    defer file.Close()

    //fmt.Println(byteValue)
    //var result map[string]interface{}
    json.Unmarshal([]byte(byteValue), &delayapp)

    //fmt.Println(delayapp.delayMsg)
    return delayapp
}

lalu bikin fungsi menyimpan data ( jika user mau mengubah nilai dari limiter)

func writeDelayApp(delayMsg, delayPerRun, delaySmart float64) {

    appDelay := DelayApp{
        DelayMsg:    int(delayMsg),
        DelayPerRun: int(delayPerRun),
        DelaySmart:  int(delaySmart),
    }
    file, _ := json.MarshalIndent(appDelay, "", " ")
    _ = ioutil.WriteFile("delayapp.json", file, 0644)
}

udah selesai? no no

create global variable yang bisa di baca di seluruh fungsi
=========================

var delayMsg *walk.NumberEdit
var delayPerRun *walk.NumberEdit
var delaySmart *walk.NumberEdit


Then buat fungsi untuk load datanya pas user membuka gui nya
==========================
func LoadDataFirstId() {
    cookiesString := models.ReadCookies("cookies.txt")
    dataCookieSafe := models.ParsingJsonfyJs(cookiesString)
    models.GetUserIdFromCookiesJson(dataCookieSafe)

    delaydefault := readDelayApp()
    //fmt.Println(delaydefault)

    boxProfile.SetEnabled(true)
    boxStarting.SetEnabled(true)
    timeOption.SetEnabled(true)


    delayMsg.SetValue(float64(delaydefault.DelayMsg))
    delayPerRun.SetValue(float64(delaydefault.DelayPerRun))
    delaySmart.SetValue(float64(delaydefault.DelaySmart))

    fbuserIDLineEdit.SetText(models.Fbuser_id)


}
oke sekarang gabungin seluruh fungsi ke button click ( gui nya)
===========================
OnClicked: func() {
    go func() {
    writeDelayApp(delayMsg.Value(), delayPerRun.Value(), delaySmart.Value())
    dlg.Accept()
    }()

},


oke DONE.

padahal cuma ngerubah ini lho:

Changing this



NOTE:
Ini ngomong hasilnya, pass ngodingnya error bisa beratus2 kali ( sambil berkata kasar, emosi dan stress)