วันอังคารที่ 8 พฤศจิกายน พ.ศ. 2559

Memo - Already Thai Font(except: FileChooser)

[bitbucket]

    เนื่องจาก font Roboto ที่เป็น Default font ของ kivy ไม่รองรับภาษาไทย จึงต้องทำการเพิ่ม font ที่รองรับภาษาไทยเข้าไป โดยในที่นี้ตกลงกันในกลุ่มว่าจะเลือกใช้ font Waree

    ในไฟล์ kivy(menubar.kv) จะเพิ่ม font โดยใช้คำสั่ง font_name



    ในไฟล์ python จะมีการเพิ่ม font ให้หัวข้อ(title)ใน Pop-up โดยใช้คำสั่ง title_font 



Memo - Edit Empty Filename Alert(Final)

[bitbucket]

    ในคอมมิตจะมีการแก้ไขให้สามารถมี Pop-up ขึ้นมาแสดง error ซ้อน Pop-up อีกที โดยไม่เกิดปัญหาใดๆ ( ก่อนหน้านี้ลองทำแล้วปัญหา ไม่สามารถใช้ปุ่ม close ของ Pop-up ที่ถูกซ้อนได้ )

    โดยทำการแก้ไขชื่อตัวแปรของ Pop-up แสดง error ให้ไม่เหมือน Pop-up ตัวอื่นๆ(เป็นสิ่งที่ควรจะทำแต่แรก)  ซึ่งการจะต้องเปลี่ยนการทำงานของปุ่ม cancel มาใช้คำสั่ง bind แทน



    จากนั้นก็แก้ไขเพิ่มเติมเล็กน้อย โดยทำการกำหนด auto_dismiss ของทุก Pop-up ให้เป็น False เพื่อให้เวลาจะปิด Pop-up ต้องกดที่ปุ่ม close หรือ cancel เท่านั้น

Memo - Edit Empty Filename Alert

[bitbucket]

    ทำการสร้างเงื่อนไข หากไม่มีการใส่ชื่อไฟล์จะทำการปิด Pop-up แล้วเปิดขึ้นมาใหม่ โดยในส่วนของช่องใส่ชื่อไฟล์จะเป็น Enter Filename!! เพื่อเป็นการแจ้งให้ผู้ใช้รู้ว่า ต้องใส่ชื่อไฟล์นะ ส่วนเนื้อหาก็จะเป็นเนื้อหาเดิมที่ได้ใส่ไว้ก่อนกดเซฟโดยไร้ชื่อไฟล์
    หากมีการใส่ชื่อไฟล์มาแล้วก็จะทำการเซฟตามปกติ


Memo - Already Edit textfile / Show Error Popup

[bitbucket]

Already Edit textfile
    แนวคิด : การ add กับ การ edit ไม่ค่อยต่างการสักเท่าไหร่ น่าจะใช้ร่วมกันได้เลย

    เริ่มแรกก็ทำการไปสร้าง attribute ให้กับ add ซะก่อน (id ได้ทำการสร้างเผื่อไปจากครั้งที่แล้ว)



    เมื่อมีการกดปุ่ม edit ก็จะมีการเรียกใช้ Method edit โดยจะส่งค่าตำแหน่งที่อยู่ไฟล์และชื่อไฟล์มาให้ ภายใน Method นี่ก็จะคล้ายกับส่วนของ add แต่จะมีการเพิ่มเติมเล็กน้อย คือ แก้ไขให้ข้อมูลใน textinput ทั้งส่วนของชื่อไฟล์และเนื้อหา เป็นชื่อไฟล์และเนื้อหาของไฟล์ที่เลือกมาแก้ไขแทน



Show Error Popup
    ทำการสร้าง class ในไฟล์ kv เพื่อสร้างหน้าตาของ Pop-up ขึ้นมาก่อน


    จากนั้นก็ไปสร้าง method ในไฟล์ python โดยจะรับค่า error_text เข้ามาแล้วส่งให้ไฟล์ kv เพื่อใช้แสดงข้อความว่า error อะไร


    ตัวอย่างการเรียกใช้


Memo - Already Add Text File with Popup

[bitbucket]

    ส่วนของ add ก็จะใช้หลักการเดียวกับการ view file ก็คือสร้าง class ในไฟล์ kv ก่อนจากนัั้นจึงไปเรียกใช้และกำหนดค่าต่างๆให้กับ class ในไฟล์ py จากนั้นก็ทำการให้ content ใน Pop-up นั้นเป็น class ที่เราได้สร้างเอาไว้

    ในการ add นั้นก็จะใช้ textinput มาเป็นเหมือนกล่องข้อความคอยรับค่าข้อความที่ผู้ใช้พิมพ์เข้ามา โดยจะสร้างเป็นสองส่วน ก็คือส่วนช่องชื่อไฟล์ และ ส่วนของเนื้อหา จากนั้นก็ทำการสร้างปุ่ม save และ cancel


    สำหรับในโค้ด python อย่างที่ได้กล่าวไปข้างต้นถึงหลักการว่าไม่ต่างกับส่วนของการ view เท่าไหร่


    แต่ส่วนที่ต้องทำเพิ่มก็คือ Method Save ที่จะรับค่าชื่อไฟล์และเนื้อหาเข้ามา ซึ่งภายในก็จะมีการใช้คำสั่ง  open(os.path.join('note/', filename), 'w') ก่อนเพื่อเป๋นการสร้างไฟล์ไว้ แล้วเก็บไว้กับตัวแปรที่ชื่อ textfile จากนั้นก็ใช้คำสั่ง textfile.write(content) เพื่อเขียนเนื้อหาเข้าไปในไฟล์ที่เก็บไว้กับตัวแปร textfile


Memo - edit : open text file(Popup)

[bitbucket]

    เปลี่ยนส่วนของการแสดงชื่อไฟล์ให้ใช้คำสั่ง os.path.basename


    จากครั้งที่แล้วได้พบกับปัญหา ตัวอักษรล้นกรอบ จึงได้ไปหาข้อมูลเพิ่มจนได้รู้จักกับ ScrollView ที่จะช่วยมาแก้ปัญหานี่ได้
    ScrollView เป็น widget ตัวนึงของ kivy ที่ทำหน้าที่คล้ายกับว่าทำให้สามารถเลื่อนดูข้อมูลที่เกินกรอบ layout ได้ แทนที่จะล้นกรอบออกไป

    เริ่มแรกเลย ทำการสร้าง class ShowText ในไฟล์ menubar.kv เพื่อกำหนดส่วนต่างๆที่จะให้แสดงใน Pop-up ในที่นี้ก็จะใช้ BoxLayout แบ่งเป็นส่วนของ
    - ScrollView ที่ข้อมูล text จะรับค่าจาก root.text หรือ text ในไฟล์ python
    - ปุ่ม cancel ที่เมื่อกดแล้วก็จะเรียกใช้ root.cancel()


    ใน menubar.py จะเปลี่ยนจากการสร้าง Boxlayout ให้เป็นการเรียกใช้ ShowText แทน โดยจะส่งค่า textfile.read() ให้กับ text และส่งคำสั่งปิด Pop-up คือ self.dismiss_popup ให้กับ cancel(เปรียบเสมือนเป็น Method) จากนั้นจึงทำการเก็บไว้ในตัวแปรที่ชื่อ content เพื่อนำไปใช้เป็น content ใน Pop-up





Memo - open text file(show data in popup)

[bitbucket]

    จากครั้งที่สามารถ view file ได้แล้ว แต่เป็นการแสดงผลใน terminal จึงทำการประยุกต์ใช้ให้การแสดงเป็นแบบ Pop-up ขึ้นมาแทน

    โดยเราจะใส่ข้อมูลไว้ใน Label ที่อยู่ในตัวแปร box ซึ่งเป็น BoxLayout จากนั้นจึงสร้าง Pop-up ขึ้นมาโดยกำหนดให้ title คือ self.desk.fileSelect_name หรือก็คือชื่อไฟล์ที่รับมาจะ class desk และกำหนดให้ content คือ box ที่เราใส่ข้อมูลเอาไว้
    ในคอมมิตนี้ยังไม่ได้มีการสร้างปุ่ม close และยังพบปัญหาตัวอักษรล้นกรอบ จึงไดทำการแก้ปัญหาในคอมมิตต่อๆไป