วันอาทิตย์ที่ 13 พฤศจิกายน พ.ศ. 2559

Memo pt.5 (import file)

4. Import File

        ไฟล์ kv จะมีการเรียกใช้ method importfile()




        โดยใน method นี้จะ มีการสร้างการ ดูไฟล์ แบบ icon view โดยเอามาจาก Filechooser โดยจะมีการตั้ง filters ได้ หรือ ตั้งว่าจะเห็นได้เฉพาะไฟล์ แล้วจะมีการสร้างปุ่ม Import โดย เมื่อกดปุ่มดังกล่าวแล้วปล่อย จะเรียกใช้ method imported () 


        ใน method imported() จะทำการ copy ไฟล์จากที่เราทำการเลือก แล้วไปใส่ในโฟลเดอร์ Storage แล้วทำการ update_files() ก็จะเห็นได้ว่ามีการ import ไฟล์เข้ามาในโฟลเดอร์ของเราเป็นที่เรียบร้อยแล้ว สาเหตุที่ต้องใช้ try....except ใน method นี้ก็เพราะว่า ถ้ากดปุ่ม import โดยไม่ได้เลือกก็จะไม่ให้มีอะไรเกิดขึ้น


Memo pt.4 (view file)

3. View

        ในไฟล์ kv มีการเรียกใช้ method เมื่อกดปุ่มของ View โดยจะเรียก method viewfile()





        ใน method นี่จะมีการทำงาน 2 แบบเรียกดูแบบ ไฟล์ข้อความ กับ ไฟล์รูปภาพ โดยจะมีการเช็ค substring 4 ตัวท้าย ซึ่งจะเป็นชื่อไฟล์ พอดี (.txt, .jpg) โดยถ้าเป็นไฟล์ข้อความ ก็จะใช้ TextInput แต่จะตั้ง keyword readonly ให้เป็น true เพื่อที่จะไม่สามารถแก้ไขได้

        หากเป็นไฟล์รูปภาพ ก็จะใช้ Image เพื่อใช้ในการเปิดไฟล์ภาพได้
     
        การทำงานส่วนใหญ่ก็ไม่ค่อยมีอะไรมากมาย เพราะเป็นเพียงการเรียกดูไฟล์

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

Memo pt.3 (edit file)

2. การ edit file
        ก็จะมีการทำงานคล้ายๆกับส่วนของ create ไฟล์

        มีการเรียกใช้ method edit_box() เมื่อมีการกดและปล่อยปุ่ม



        โดย method edit_box() จะมีการใช้ try....except เพื่อกันการ error อย่างการกด edit โดยที่ไม่ได้เลือกไฟล์ ซึ่งถ้าทำอย่างนั้นจะให้ except เป็น pass หรือไม่ต้องทำอะไรนี่เอง โดยส่วนนี้จะคล้ายๆกับการ create file แต่จะมีส่วนที่แตกต่างคือ ด้านบนจะมีการเช็คเงื่อนไขว่ามีตัวที่ถูกกดหรือไม่ แล้วจะมีตัวแปร path เพื่อใใช้ในการเก็บค่าที่อยู่ของไฟล์ที่เลือก แล้ว มีตัวแปร filename ใช้การเก็บชื่อไฟล์ โดยจะ import os มาช่วย 

        คำสั่งที่ใช้คือ os.path.basename(self.desk.filechooser.selection[0]) การใช้ basename จะเป็นการใช้หาชื่อของไฟล์ตัวที่ถูกเลือกได้เย หลังงจากนั้นก็จะทำการ read ไฟล์ ดังกล่าว และจะทำขั้นตอนเหมือนการ create เพียงแต่ popup ที่เปิดมาจะมีข้อมูลอยู่แล้ว

        โดยเมื่อกดปุ่ม save ก็จะไปเรียกใช้ method save_box()

        ใน method นี้จะมีการเรียกหน้าต่างขึ้นมาเพื่อถามให้แน่ชัดว่าจะต้องการ save หรือ cancel ข้อความที่ได้ถูกการแก้ไขแล้ว โดยเป็นการสร้าง pop up ทั่วไป แต่ว่าจะมีการเก็บชื่อไฟล์ แล้วมาแสดงตรงหน้าต่างเพื่อความแน่ใจด้วย



        แล้วเมื่อมีการเรียกใช้ method saved() ที่จะถูกเรียกใช้เมื่อกดและปล่อย ปุ่ม save ก็จะไปทำการ save เพียงแต่ว่าจะมีการเข้าเงื่อนไข การ save จากการ edit โดยจะแตกต่างจากการ save แบบจากการ สร้างไฟล์ก็ตรงที่ว่า จะมีการลบไฟล์ตัวเก่าทิ้ง แล้วจะมีไฟล์ตัวที่ถูกแก้ไขขึ้นมาแทนที่ เมื่อ save เสร็จก็เป็นการจบขั้นตอนการ edit


Memo pt.2 (create text file)

ในบทความนี้จะอธิบายตาม Use case ต่างๆ
1.การ Create Text File




ในไฟล์ kv จะมีการใช้ on_release หรือ เมื่อปล่อยปุ่มกด จะเรียกใช้ method new_text()



        ใน method new_text() นั้น จะมีการสร้าง BoxLayout จัดเรื่องกันเป็นแนวตั้ง แล้วจะมีการสร้าง GridLayout ที่มี 2 คอลัมน์ หลังจากนั้นจะมีการใช้ TextInput ซึ่งจะเป็นคลาสที่ใช้ในการ ใส่ข้อความ โดยจะใช้ 2 ตัวเพื่อรับข้อความ 2 ชุด จะมีชุดของชื่อไฟล์ กับ ชุดของเนื้อหาที่จะเขียนลงไป

        หลังจากนั้นก็จะนำ TextInput ทั้งสองตัวไปใส่ไว้ใน BoxLayout ที่สร้างมา แล้วจากปุ่มกดขึ้นมา 2 ปุ่ม คือ Save & Cancel โดย 2 ปุ่มจะถูกใส่เข้าไปใน GridLayout 

        มีการเรียกใช้คำสั่ง popup โดยจะมี หัวว่าเป็น Note แล้วให้ content เป็น file_name และ content ซึ่งจะทำให้สามารถแก้ไขได้ โดยหน้าตาจะเป็นแบบนี้


        ปุ่มกด 2 ปุ่มที่สร้างขึ้นมาจะมีการ bind ไว้ โดย cancel ถ้า มีการกดแล้วปล่อยปุ่มจะให้ทำคำสั่ง dismiss หรือทำให้หน้าต่าง pop up หายไป ส่วนของปุ่ม save จะมีการ bind ไว้ว่าเมื่อกดแล้วปล่อยจะเรียก ใช้ method saved()


        ใน method saved() จะมีการ check ว่าเป็นการ saved ที่เกิดขึ้นจากการทำอะไร จากการ create หรือ edit ซึ่งในที่นี้เรา มาจากการสร้างไฟล์ โดยจะมีการเปิดไฟล์ โดยเอาชื่อ file_name มาใส่ แล้วทำการ write ในส่วนของ text ของ content ซึ่งจะมีสองส่วนคือส่วน ชื่อไฟล์ และ ส่วนเนื้อหา แล้วก็จะมีการ update_files ของ filechooser โดยจะเหมือนการ refresh ของหน้าเมนู เพื่อให้เห็นว่ามีไฟล์ใหม่ถูกสร้าง


Memo pt.1 (use case)

Use Cases

Create text file
1. กด create text file
2. มีหน้าต่างขึ้นมา สามารถตั้งชื่อไฟล์และใส่ข้อมูลได้
3. กด save หรือ cancel
4. ถ้ากด save จะมีหน้าต่างยืนยัน และกลับไปหน้าเมนู
5. ถ้ากด cancel จะมีหน้าต่างเตือน และกลับไปหน้าเมนู

Edit
1. เลือกไฟล์จากหน้าเมนู
2. กด edit
3. จะมีหน้าต่างขึ้นมาให้แก้ไข สามารถแก้ไขชื่อไฟล์และข้อมูลได้
4. กด save หรือ cancel
5. ถ้ากด save จะมีการแสดงสถานะที่หน้าเมนู ว่ามีการถูกบันทึก
6. ถ้ากด cancel จะมีหน้าต่างเตือน และกลับไปหน้าเมนู

Delete
1. กดเลือกไฟล์
2. กด delete
3. จะมีหน้าต่างยืนยัน หรือ cancel
4. หากยืนยันว่าจะ delete จะกลับไปหน้าเมนู และจะมีสถานะว่าไฟล์ถูกลบแล้ว
5. หาก cancel จะกลับไปหน้าเมนู

View file
1. เลือกไฟล์
2. กด view file
3. จะมีหน้าต่างแสดงข้อมูลขึ้นมา
4. กด close เพื่อปิด

Import file
1. กด import file
2. จะมี file dialog มาให้เลือก
3. กดไฟล์ที่ต้องการเลือก
4. กดยืนยัน หรือ cancel 
5. ถ้ากดยืนยัน ไฟล์จะถูกเพิ่มหน้าในหน้าเมนู
6. ถ้ากด cancel จะปิดหน้า file dialog




Issues on bitbucket

       จากในคลาสวันที่ 9 พ.ย. อาจารย์ให้ลองใช้ issues ในการทำงานบน bitbucket
โดยหัวข้อที่ตั้งนั้นจะเป็นเกี่ยวกับ ถ้าหากว่า memo มีเรื่องของ setting จะ setting อะไร แล้วเก็บข้อมูล setting ยังไง

 หน้าตาของการตั้ง Issues


แสดงรายละเอียดต่างๆ(ชนิดของปัญหา,ฯลฯ)


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

Mercurial with Eclipse

       เป็น Plugin จากทาง Mercurial เพื่อใช้งานกับ โปรแกรม eclipse ซึ่งโดยส่วนตัวแล้วทำให้สะดวกต่อการทำงานมายิ่งขึ้น โดยเฉพาะการ merge เมื่อใช้ plugin ตัวนี้ก็จะทำให้สามารถแก้ไขได้ง่ายขึ้น

Guide
https://www.mercurial-scm.org/wiki/MercurialEclipse

สไลด์อธิบายการใช้งาน
https://drive.google.com/file/d/0B64Uua1QVt1iZEQ4NnRPcTRsRlE/view?usp=sharing