Search This Blog

Friday, October 27, 2017

Cross-platform C++ programming with wxWidgets

  1. နိဒါန်း
  2. Windows တွင်တပ်ဆင်ခြင်း
  3. Linux တွင်တပ်ဆင်ခြင်း
  4. Mac တွင်တပ်ဆင်ခြင်း
  5. အကိုးအကားများ

နိဒါန်း

wxWidgets က Windows ၊ Linux နဲ့ Mac OSX အစ​ ရှိ​တဲ့ ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ GUI applications တွေ ရေး​ဖို့ အတွက် C++ library ပါ။ သူ​နဲ့ GUI code တွေ ရေး​ပြီး​ ရင် ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ ကုဒ် ကို သိပ်​ပြင်​ စရာ မ​လို​ပဲ တန်း​ပြီး compile လုပ်၊ run လုပ်​လို့​ ရ​ပါ​တယ်။

wxWidgets ​က free လည်း​ပေး open source လည်း ​ဖြစ် တဲ့ software ပါ။ ကိုယ်​ပိုင် ဆော့​ဝဲ တွေ​ ထုတ်​မယ်​ ဆို​ရင် လည်း ဘာ​မှ ကန့်​သတ်​ချက်​ တွေ မ​ရှိ​ ပါ​ဘူး [wxW98]။ အဲဒါက Qt နဲ့ အဓိက ကွာခြားချက် ပါ။ Qt က LGPLv3 လိုင်စင် ကို free ပေးထားပြီး၊ ကိုယ်ပိုင် စီးပွားရေး အတွက် သုံးမယ် ဆိုရင် ကန့်သတ်ချက် တချို့ ရှိတာကြောင့် လိုင်စင် ဝယ်ဖို့ လိုကောင်း လိုနိုင် ပါတယ် [Qt17]။

Native platform ကို တတ်နိုင် သလောက် သုံးထား တာမို့ wxWidgets သုံးလို့ ရလာတဲ့ GUI တွေဟာ သုံးတဲ့ platform နဲ့ လိုက်ဖက်ပြီး ပင်ကို အမြင် အတိုင်း တသားထဲ ကျ တာကို ခံစား ရမှာပါ [wxW12]။ Standard C++ ကိုပဲ သုံးထားပြီး Qt တို့လို အထူး extension တွေ မသုံးထား တဲ့ အတွက် ရှုပ်ထွေးမှု နည်းတာ ကလည်း ကောင်းတဲ့ အချက် တစ်ခုပါ။

wxWidgets နဲ့ ရလာတဲ့ binary application တွေဟာ သေးငယ် ပေါ့ပါး တာမို့ embedded system တွေအတွက် အထူး သင့်တော် ပါတယ်။ နောက်တစ်ခါ library အရွယ်အစား တွေ ယှဉ်ရင်လည်း ဥပမာ အနေနဲ့ Qt library ကို တပ်ဆင်ရင် \(\approx 200\) MB လောက် အရွယ် ရှိပေမယ့် wxWidgets library က \(\approx 30\) MB လောက်ပဲ ယူပါတယ်။

wxWidgets က C++ အတွက် သာ မကပဲ python, perl, php, java, lua, lisp, erlang, eiffel, C# (.NET), BASIC, ruby နဲ့ javascript အတွက် တောင်မှ bindings [wxW15a] တွေ ရှိပါတယ်။ wxWidgets က တော်တော် ပြည့်စုံ ရင့်ကျက် တဲ့ GUI toolkits ဖြစ်ပြီး၊ utility classes လည်း အများကြီး ရှိတာမို့ ကောင်းမွန် သင့်တော် တဲ့ GUI toolkits အနေနဲ့ ညွှန်းဆို ချင်ပါတယ်။

wxWidgets ကို အသုံးပြုတဲ့ သူတွေ၊ အဖွဲ့အစည်းတွေ အများကြီး ရှိပြီး အဲဒီ အထဲမှာ လူသိများ တာတွေက NASA, AMD, Xerox, နဲ့ Open Source Applications Foundation (OSAF) တို့ ဖြစ်ပါတယ်။ ထင်ရှားတဲ့ wxWidgets applications တွေက AVG AntiVirus, Audacity, Filezilla, Code::Blocks, CodeLite တို့ ဖြစ်ပါတယ်။