วันจันทร์ที่ 28 พฤศจิกายน พ.ศ. 2559

Memo - My Commit

[bitbucket]  1.   Add Use Case.txt
[bitbucket]  2.   remove .pyc file
[bitbucket]  3.   Show Filename in Terminal when Select File [Link]
[bitbucket]  4.   remove .metadata / sceenmanager is main file
[bitbucket]  5.   edit show filename [Link]
[bitbucket]  6.   open text file(show data in terminal) [Link]
[bitbucket]  7.   open text file(show data in popup) [Link]
[bitbucket]  8.   merge
[bitbucket]  9.   edit : open text file(Popup) [Link]
[bitbucket]  10. Already Add Text File with Popup [Link]
[bitbucket]  11. merge and adapt
[bitbucket]  12. Already Edit textfile / Show Error Popup [Link]
[bitbucket]  13. Edit Empty Filename Alert [Link]
[bitbucket]  14. Edit Empty Filename Alert(Final) [Link]
[bitbucket]  15. Already Thai Font(except: FileChooser) [Link]
[bitbucket]  16. Merge
[bitbucket]  17. Already Raname File [Link]
[bitbucket]  18. Add head bar / Edit Setting System [Link]
[bitbucket]  19. Add logo [Link]
[bitbucket]  20. fix bug [Link]

Memo - fix bug

    หากทำการกด edit แล้วกด save จะทำให้เกิดชื่อไฟล์ .txt.txt จึงต้องสร้างเงื่อนไขว่า หากชื่อไฟล์ลงท้ายด้วย .txt อยู่แล้วก็ไม่ต้องเติมเพิ่มเข้าไป


Memo - Add logo

ทำการเพิ่มโลโก้ให้กับโปรแกรม Memo
( ออกแบบโดย Nitikarn )




วันเสาร์ที่ 19 พฤศจิกายน พ.ศ. 2559

Memo - Add head bar / Edit Setting System

[bitbucket]

    ตั้งแต่เริ่มทำมาจนถึงล่าสุด หน้าตาเจ้า Memo ของเรานั้นยังดูไม่ค่อยมีจุดเด่นอะไรเท่าไหร่นัก จึงต้องมีการปรับปรุง GUI กันสักหน่อย


    สิ่งแรกที่คิดจะปรับปรุงก็คือ เพิ่มส่วนของ head bar(แถบดำๆข้างบนนั่นแหละ) ขึ้นมา โดยวางแผนที่จะนำโลโก้ไปแปะไว้ที่ฝั่งซ้าย ส่วนฝั่งขวาก็จะเป็นปุ่มสำหรับเข้าหน้าของการตั้งค่า

    แต่ระบบการตั้งค่ายังไม่เสร็จ....

    เรื่องของระบบการตั้งค่า ก็ยังคงดำเนินการอยู่เรื่อยๆโดยตอนนี้ก็ได้ย้าย Method การตั้งค่าที่นิธิกานต์(เพื่อนร่วมทีม) ทดลองใส่ไว้ในไฟล์ต่างๆมารวมกันไว้ที่ไฟล์หลัก(Memo.py)เรียบร้อย โดยเมื่อตอนที่โปรแกรมกำลังจะรันขึ้นมา ก็จะมีดึงข้อมูลจากไฟล์ setting.ini มาเซ็ตตั้งค่าจุดต่างๆของโปรแกรมก่อนทันที



Memo - Already Raname File

[bitbucket]

    ในมุมมองของ user นั้น บางทีก็อยากเปลี่ยนชื่อไฟล์ที่บันทึกไว้ โดยเฉพาะกับรูปที่ import เข้ามานั้นมักจะมีชื่อไฟล์ที่เป็นตัวเลข ชื่อที่ยาวและไม่ค่อยสื่อความหมายเท่าไหร่นัก

   ฉนั้น Memo ของเราจึงต้องเพิ่มฟังก์ชั่นเปลี่ยนชื่อไฟล์ขึ้นมาเพื่อรองรับความต้องการนี้



    ทีนี้ในส่วนของโค้ดที่ทำให้สามารถเปลี่ยนชื่อไฟล์ได้นั้น ก็ยังคงใช้โมดูล os เช่นเดิม โดยจะใช้คำสั่ง os.rename(ชื่อไฟล์เก่า, ชื่อไฟล์ใหม่) ซึ่งชื่อไฟล์ที่ใส่เข้าไปทั้งเก่าและใหม่นั้น จะต้องรวมถึงที่อยู่ของไฟล์ด้วย เพราะคำสั่งนี้มันไม่ได้อัจฉริยะพอที่จะรับรู้ได้ว่าไฟล์ที่จะเปลี่ยนชื่อมันไปอยู่ซอกหลืบไหนของคอม
   

   พอได้ส่วนที่ใช้สำหรับแก้ไขชื่อแล้ว ก็ทำการสร้างส่วนของ GUI กันต่อ เริ่มจากสร้างหน้าตาของ Pop-up Rename และ ปุ่มที่จะใช้เรียก Pop-up ขึ้นมา




    เมื่อกดปุ่มแล้วจะมีเรียกใช้ Method rename_popup ซึ่งก็คือ Method ที่เราจะใช้เรียก Pop-up ขึ้นมานั่นเอง โดยภายในก็จะมีการส่งค่าและเรียกใช้ class rename ที่ได้สร้างไว้ตอนแรก เท่านี้ส่วนของฟังก์ชั่น Rename ก็เสร็จเรียบร้อย





วันอังคารที่ 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 และยังพบปัญหาตัวอักษรล้นกรอบ จึงไดทำการแก้ปัญหาในคอมมิตต่อๆไป


Memo - open text file(show data in terminal)

[bitbucket]

    จากที่ได้ศึกษาตามเว็บต่างๆ ทำให้รู้จักกับคำสั่งที่จะใช้ในส่วนของการ view file ได้

    โดยขั้นแรกจะมีการกำหนด on_release ให้กับปุ่ม view note ก่อน หากกดแล้วปล่อยก็จะมีเรียกใช้ Method open โดยค่าพารามิเตอร์ที่ส่งไปก็จะมี ตำแหน่งของไฟล์ที่เลือก และ ไฟล์ที่เลือก
    ใน Method open จะ try except เผื่อในกรณีที่ไม่มีการเลือกไฟล์ก็จะใน except ในส่วนของ try นั้นจะมีการใช้คำสั่ง open เพื่อเปิดไฟล์แล้วเก็บไว้กับตัวแปรที่ชื่อ f จากนั้นก็ให้ print(f.read()) หรือก็คือการ print ที่อ่านออกมาจากไฟล์ที่เก็บไว้กับตัวแปร f นั่นเอง


Memo - edit show filename

[bitbucket]

    เนื่องจากการแสดงชื่อไฟล์ก่อนหน้านี้จะมีการแสดง path อยู่ด้วย จึงพยายามทำการแก้ไขให้แสดงเฉพาะชื่อไฟล์เท่านั้น ซึ่งในคอมมิตนี้เลือกที่จะใช้คำสั่ง rspilt ตัดคำที่อยู่หลัง \ จากท้ายออกมาเพื่อนำมาแสดงทาง terminal  ( ภายหลังพบว่าเกิดปัญหาจึงได้เปลี่ยนไปใช้ os.path.basename แทน )


Memo - Show Filename in Terminal when Select File

[bitbucket]

    ใช้คำสั่ง on_selection เพื่อให้เมื่อมีการเลือกไฟล์จะไปเรียกใช้ Method selected โดยส่งค่าพารามิเตอร์เป็นไฟล์ที่เลือกออกมา เพื่อทำการแสดงชื่อไฟล์ออกมาทาง terminal