နိဒါန်း
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 တို့ ဖြစ်ပါတယ်။
Windows တွင်တပ်ဆင်ခြင်း
wxWidgets ကို Windows မှာ အသုံးပြု တဲ့အခါ IDE အမျိုးမျိုး နဲ့ တွဲသုံးနိုင် ပါတယ်။ Microsoft Visual Studio IDE ကို သုံးလို့ ရသလို၊ wxDev-C++ ၊ CodeLite [Cod13; Cod17] ၊ Code::Blocks စတဲ့ IDE တွေ ကိုလည်း ရွေးချယ် အသုံး ပြုနိုင် ပါတယ်။wxDev-C++ ဖြင့်အသုံးပြုခြင်း
Windows ပေါ်မှာ wxWidgets applications တွေ ဖန်တီးဖို့ ရွေးချယ် စရာ တစ်ခု အနေနဲ့ ဆိုရင် wxDev-C++ ကို တော်တော် သဘောကျပါတယ်။ အဲဒီမှာ Pragramming with wxDev-C++ (http://wxdevcpp-book.sourceforge.net/) ဆိုတဲ့ စာအုပ်ကို လည်း တခါထဲ ရနိုင် တာကလည်း ပရိုဂရမ်တွေ လေ့လာ၊ ဖန်တီး တဲ့အခါ လွယ်ကူ အဆင်ပြေ မြန်ဆန် ဖို့ အထောက် အကူ တစ်ခု ပါ။ wxDev-C++ ကို http://wxdsgn.sourceforge.net/ ကနေ download လုပ်ပြီး၊ install လုပ်နိုင် ပါတယ်။အဲဒီနောက် wxDev-C++ ကို ဖွင့်ပြီး တဲ့အခါ File menu → New... → Project ကို နှိပ်ပြီး project တစ်ခု ဖန်တီး လိုက် ပါမယ်။ New project ဝင်းဒိုး ပေါ်လာ တဲ့ အခါ Basic tab ထဲက wxWidgets Frame အမျိုးအစား ကို ရွေး၊ wxTest စတဲ့ နာမည် တစ်ခုခု ပေး ပြီး OK ကို နှိပ်လိုက် ပါမယ်။
အဲဒီနောက် New wxFrame ဝင်းဒိုး မှာ Window style အမျိုးအစား၊ MingW gcc စတဲ့ compiler တွေကို ရွေးပြီး Create ခလုတ် ကို နှိပ် နိုင် ပါတယ်။
Project ဖန်တီး ရလာ တဲ့ အခါ GUI design ကို wxTestFrm.wxform ဆိုတဲ့ tab မှာ တွေ့နေ ရမှာ ဖြစ်ပါတယ်။ wxTestFrm.cpp စတဲ့ source ဖိုင် တွေမှာ လည်း အမျိုးမျိုး ပြုပြင် စမ်းသပ် နိုင် ပါတယ်။ Run ခလုတ် ကိုနှိပ် ဒါမှမဟုတ် F8 ကီးကို နှိပ် လိုက်ရင် GUI application run လာတာ ကို တွေ့ရ ပါလိမ့်မယ်။
Windows application တွေမှာ form ရဲ့ icon ကို သတ်မှတ်လို့ ရပါတယ်။ wxWidgets ကုဒ်ထဲ မှာ icon ဖိုင်ကို xpm format နဲ့ တစ်ခါထည်း ထည့်လို့ ရပြီး ဥပမာ အနေ့နဲ့ favicon.xpm ကို ထည့်ချင်ရင် form ရဲ့ cpp ဖိုင်အစမှာ အောက်က အတိုင်း ထည့်နိုင်ပါတယ်။
#include "favicon.xpm"နောက် ကုဒ်ထဲမှာ icon ကို အောက်က အတိုင်း ပြောင်းပေး ပြီး သတ်မှတ်နိုင်ပါတယ်။
SetIcon(wxIcon(favicon_xpm));icon ဖိုင်ကို xpm format နဲ့ရချင်ရင် ဖိုတို ရှော့ လိုမျိုး ပုံတွေကို ပြင်ပေးနိုင်တဲ့ GIMP ဆိုတဲ့ ဆော့ဖ်ဝဲ ကို သုံးနိုင်ပါတယ်။ xpm ဖိုင်ဖန်တီးပြီးတဲ့ အခါမှာ အဲဒီဖိုင်ကို Notepad လိုမျိုး text editor တစ်ခုခု နဲ့ ဖွင့်ပြီး ထိပ်ဆုံးနားမှာ ပါတဲ့ ဖိုင် path ကို ပြောင်းဖို့ လိုကောင်း လိုနိုင်ပါတယ်။ ရှေ့က ဖိုင် path တွေကို အကုန်ဖျက်ပြီး ဖိုင်နာမည် တစ်ခုပဲ ချန်တာ အဆင်ပြေ တာကို တွေ့ရ ပါတယ်။ Windows explorer မှာ ပေါ်မယ့် program ဖိုင်ရဲ့ icon ကို ပြင်ချင်ရင် တော့ ဖိုင် extension rc ဆိုပြီးရှိတဲ့ resource ဖိုင်ကို ပြင်ဖို့ လိုပါတယ်။ ဥပမာ အနေနဲ့ favicon48.ico ဆိုတဲ့ icon ကို သုံးချင်ရင် အောက်ကအတိုင်း ကုဒ်တစ်လိုင်း ထပ်ဖြည့်ပြီး ပြင်ဖို့ လိုပါတယ်။
aaaaAppIcon ICON "favicon48.ico" #includeအဲဒီမှာ icon ဖိုင်ရဲ့ နာမည်ကို aaaaAppIcon လို့ ပေးရတဲ့ အကြောင်းက icon ဖိုင်တွေကို alphabetically စဉ်လိုက်ရင် သူ့ကို အရင်တွေ့အောင်လို့ပါ။
Visual Studio ဖြင့်အသုံးပြုခြင်း
IDE အတွက် Visual Studio ကို https://www.visualstudio.com/downloads/ ကနေ download လုပ်ပြီး တဲ့အခါ ကိုယ် တပ်ဆင် ချင်တဲ့ အစိတ် အပိုင်း တွေကို သတ်မှတ်ပြီး တပ်ဆင် နိုင်ပါ တယ်။နောက်တစ်ခါ wxWidgets ကို https://www.wxwidgets.org/downloads/ ကနေ download လုပ်လိုက် ပါမယ်။ ဒီ နမူနာ မှာတော့ latest stable release ဖြစ်တဲ့ 3.0.3 Windows installer ကို ရွေးလိုက် ပြီး C:/wxWidgets303/ ထဲမှာ install လုပ်လိုက် ပါမယ်။
အဲဒီနောက် C:/wxWidgets303/docs/msw ထဲမှာ ဒါမှမဟုတ် online မှာလည်း တွေ့နိုင် တဲ့ install.txt ဆိုတဲ့ guide ထဲက Microsoft Visual C++ compilation ဆိုတဲ့ အပိုင်း ကို ဖတ်နိုင် ပါတယ် [wxW15b]။ စစခြင်း WXWIN ဆိုတဲ့ environment variable ကို သတ်မှတ်ဖို့ လိုပါတယ်။ အဲ့ဒါ အတွက် command window ကို administrator အနေနဲ့ run ဖို့ start menu ကို right click နှိပ်ပြီး command prompt (admin) ကို ရွေးလိုက် ပါမယ်။ အဲ့ဒီမှာ အောက်က command သုံးပြီး WXWIN ကို သတ်မှတ် လိုက် ပါမယ်။
setx -m WXWIN C:\wxWidgets303
အဲဒီနောက် မှာ wxWidgets ကို build လုပ်ဖို့ အတွက် အသင့် ပါရှိတဲ့ C:/wxWidgets303/build/msw ထဲက wx_vc12.sln ဆိုတဲ့ solution ကို Visual Studio 2017 နဲ့ ဖွင့်လိုက် ပါမယ်။
Retarget Projects ဆိုပြီး upgrade လုပ်ဖို့ မေးလာတဲ့ အခါ OK ကို နှိပ်လိုက် ပါမယ်။
ပြီးတဲ့ အခါ configuration အမျိုးမျိုးကို ရွေးပြီး build အကြိမ်ကြိမ် လုပ်နိုင် ပါတယ်။
အဲဒီလို build လုပ်ပြီး တဲ့အခါ နမူနာ wxWidgets application တစ်ခု ကို compile လုပ်ပြီး၊ run ကြည့်ပါမယ်။ ဒါကြောင့် C:/wxWidgets303/samples/ ထဲက minimal ဆိုတဲ့ folder ကို minial2 ဆိုတဲ့ နာမည်နဲ့ duplicate လုပ်လိုက် ပါမယ်။ ပြီးတဲ့ အခါ minimal_vc9.vcproj ကို ဖွင့်လိုက် ပါမယ်။
အဲဒါ ကို build လုပ်ပြီး၊ run လိုက်တဲ့ အခါ အောက်က ပုံ အတိုင်း တွေ့ရမှာ ဖြစ် ပါတယ်။ အဲဒီမှာ minimal.cpp ဆိုတဲ့ source ကို အမျိုးမျိုး ပြုပြင် စမ်းသပ် ကြည့်နိုင် ပါတယ်။
ပရိုဂရမ် ရဲ့ icon ကို ပြင်ချင်ရင် C:/wxWidgets303/samples/sample.ico ကို ကိုယ်လို ချင်တဲ့ icon နဲ့ အစားထိုးလို့ ရပါတယ်။
Linux တွင်တပ်ဆင်ခြင်း
wxWidgets ကို Linux မှာ ထည့်ဖို့အတွက် အောက်က စာရင်း အတိုင်း terminal မှာ command တွေရိုက်ပြီး တပ်ဆင်ထည့်သွင်းနိုင် ပါတယ် [wxW14]။sudo apt-get update sudo apt-get install build-essential sudo apt-get install libwxgtk3.0-devListing. Linux တွင် wxWidgets ကို တပ်ဆင်ခြင်း။
နမူနာ အနေနဲ့ ရိုးရှင်း တဲ့ wxsimple.cpp ဆိုတဲ့ ပရိုဂရမ် လေးကို အောက်ပါ အတိုင်း ဖန်တီး လိုက် ပါမယ် [Zet13]။
#include < wx/wx.h > class Simple : public wxFrame { public: Simple(const wxString& title); }; Simple::Simple(const wxString& title) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150)) { Centre(); } class MyApp : public wxApp { public: virtual bool OnInit(); }; IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { Simple *simple = new Simple(wxT("Simple")); simple->Show(true); return true; }Listing. wxsimple.cpp
ပြီးတဲ့ အခါ အောက်က command ကို သုံးပြီး compile လုပ်နိုင် ပါတယ်။
g++ wxsimple.cpp `wx-config --cxxflags --libs` -o wxsimple`wx-config --cxxflags` က compile လုပ်ဖို့ အတွက် လိုအပ်တဲ့ flags တွေကို ထုတ်ပေး ပြီး `wx-config --libs` က link လုပ်ဖို့ အတွက် လိုအပ်တဲ့ flags တွေကို ထုတ်ပေး ပါတယ်။ ရှိတဲ့ Terminal က အဆင် မပြေရင် xterm ကို အောက်ပါ အတိုင်း တပ်ဆင် နိုင် ပါတယ်။
sudo apt-get install xtermပြီးရင် ခုနက ရလာတဲ့ binary ကို အောက်က အတိုင်း run လိုက်တဲ့ အခါ ပုံမှာ ပြထားသလို တွေ့နိုင် ပါတယ်။
./wxsimple
wxWidgets ကို source မှ build လုပ်ခြင်း
wxWidgets ကို source ကနေ စိတ်ကြိုက် build လုပ်ချင် ရင် အောက်က အတိုင်း build လုပ်ပြီး၊ install လုပ်နိုင် ပါတယ် [wxW14]။sudo apt-get update sudo apt-get install build-essential sudo apt-get install libgtk-3-dev wget https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.3/wxWidgets-3.0.3.tar.bz2 tar xjvf wxWidgets-3.0.3.tar.bz2 cd wxWidgets-3.0.3 mkdir gtk-build cd gtk-build ../configure --enable-unicode --disable-shared --with-gtk=3 make sudo make install wx-config --versionBuild လုပ်ပြီးတဲ့ wxWidgets ကို သုံးပြီး samples အခန်း ထဲက minimal ဆိုတဲ့ နမူနာကို run ကြည့် လိုက်တဲ့ အခါ အောက်ကပုံ အတိုင်း တွေ့ရ ပါတယ်။
cd gtk-build/samples/minimal make ./minimal
Code::Blocks ဖြင့်အသုံးပြုခြင်း
Cross platform GUI application တွေ အတွက် wxWidgets C/C++ ပရိုဂရမ် တွေ ရေးသားဖို့ အတွက် Code::Blocks ဆိုတဲ့ open source လည်းဖြစ်၊ free လည်းပေးတဲ့ IDE နဲ့ တွဲသုံး ကြည့်ပါမယ်။ သူက extension တွေလည်းများ၊ စိတ်ကြိုက် configure လည်း လုပ်နိုင်ပြီး တော်တော် လည်း ခေတ်စား တဲ့ IDE တစ်ခု ပါ။ Code::Blocks IDE ကို တပ်ဆင် ဖို့ အတွက် terminal မှာ အောက်က စာရင်း အတိုင်း ရိုက်ထည့် နိုင် ပါတယ်။sudo apt-get install build-essential sudo apt-get install gdb sudo add-apt-repository ppa:damien-moore/codeblocks-stable sudo apt-get update sudo apt-get install codeblocks codeblocks-contribListing. Code Blocks တပ်ဆင်ခြင်း။
Code::Blocks ကို တပ်ဆင် ပြီးတဲ့ အခါ၊ သူ့ကို ဖွင့်လိုက်ပြီး အောက်က ပုံ မှာ ပြထား သလို File menu → New → Project... ဒါမှ မဟုတ် Start here ဆိုတဲ့ tab ထဲက Create a new project ကို နှိပ် လိုက် ပါမယ်။ ပြီးရင် ပေါ်လာတဲ့ ဝင်းဒိုး ထဲက project အမျိုးအစား အတွက် wxWidgets project ကို ရွေးပြီး Go ကို နှိပ်လိုက် ပါမယ်။
နောက်ပေါ် လာတဲ့ ဝင်းဒိုးမှာ အောက်က ပုံတွေ မှာ ပြထားတဲ့ အဆင့် တွေ အတိုင်း wxWidgets version ဥပမာ wxWidgets 3.0.x ကို ရွေးပြီး Next ကို နှိပ်နိုင် ပါတယ်။ ပြီးတဲ့ အခါ ပရောဂျက် နာမည် နဲ့ သိမ်းမည့် နေရာ ကို သတ်မှတ် နိုင် ပါတယ်။ နောက်တစ်ခါ GUI builder ကို None ရွေးပြီး၊ Project အမျိုးအစား ကို Frame Based ရွေးလိုက် ပါမယ်။ ဆက်လက်ပြီး GNU GCC Compiler ကို ရွေးပြီး၊ Default wxWidgets configuration သုံးဖို့ သတ်မှတ်ပြီး တဲ့ အခါ Finish ကို နှိပ်လိုက် ပါမယ်။
အဲဒီလို Project ကို ဖန်တီးပြီးတဲ့ အခါ အောက်ပုံ မှာလို ညာဘက် preject explorer ဝင်းဒိုး ထဲက wxtestMain.cpp ၊ wxtestApp.cpp စတဲ့ source တွေကို အမျိုးမျိုး ပြုပြင် စမ်းသပ် ကြည့်နိုင် ပါတယ်။ ပြီးတဲ့ အခါ F9 ခလုပ် နှိပ်ပြီး Build and run လုပ်လိုက်ရင် နောက်တစ်ပုံ မှာ ပြထား တဲ့ အတိုင်း ပရိုဂရမ် ရဲ့ GUI output ကို တွေ့နိုင် ပါတယ်။
Mac တွင်တပ်ဆင်ခြင်း
ပထမဆုံး Mac Ports ကို အရင် install လုပ်ပါမယ်။ နောက် တစ်ခါ အောက်က ကွန်မန်း ကို သုံးပြီး wxWidgets ကို install လုပ်ပါတယ်။port search wxWidgets sudo port -v install wxWidgets-3.0 wx-config
Codelite ဖြင့်အသုံးပြုခြင်း
အဲဒါတွေ ပြီးတော့ CodeLite ကို install လုပ်ပါတယ်။ wxWidgets code တွေကို မှန်မှန်ကန်ကန် compile လုပ်ဖို့ CodeLite ရဲ့ Compiler settings တွေကို ပြင်ဖို့ လိုပါတယ်။ အဲဒီလို ပြင်ဖို့ Settings menu → Build Settings command ကိုသွားပါ။ Bulid Settings ဆိုတဲ့ ဝင်းဒိုး ပေါ်လာရင် gnu g++ → Tools ဆိုတဲ့ အပိုင်းက PATH environment variable: ဆိုတဲ့ field မှာ အောက်က အတိုင်း ပြင်ပါတယ်။/opt/local/bin:/usr/local/bin:/usr/bin:/binနောက်တခါ build လုပ်လို့ ထွက်လာတဲ့ output အမျိုးအစားကို မှန်ဖို့ CodeLite IDE ရဲ့ Workspace windows ထဲက project folder ကို right click နှိပ်ပြီး Make this project output a bundle command ကို နှိပ်ပါမယ်။ နောက် Debug နဲ့ Release ဆိုတဲ့ targets နှစ်ခု စလုံးကို မှတ်နိုင်ပါတယ်။ အဲဒီနေရာမှာပဲ ကိုယ့် ဆော့ဖ်ဝဲ ရဲ့ icon file ကို သတ်မှတ်ပေး နိုင်ပါတယ်။ အဲဒီ icon ဖိုင် က icns format ဖြစ်ဖို့ လိုပါတယ်။ icns extension နဲ့ icon ဖန်တီးချင်ရင် App store မှာ free ရနိုင်တဲ့Img2icns ဆိုတဲ့ ဆော့ဖ်ဝဲ ကို သုံးနိုင်ပါတယ်။
* ဤပို့စ် အတွက် Github ပေါ်ရှိ Source code နမူနာ များ
အကိုးအကားများ
[Cod13] CodeLite. Download CodeLite bundled with MinGW and wxWidgets. 2013.url: https://sourceforge.net/projects/codelite/files/Releases/codelite-5.0/codelite-5.0.6213-mingw4.7.1-wx2.9.4.exe/download.
[Cod17] CodeLite Wiki. Compiling wxWidgets with MinGW. 2017.
url: http://codelite.org/Developers/BuildingWxWidgetsWin.
[Qt17] Qt. Licensing - Before you begin, make the right license choice. 2017.
url: https://www1.qt.io/licensing/.
[Zet13] ZetCode. wxWidgets tutorial. 2013.
url: http://zetcode.com/gui/wxwidgets/.
[wxW12] wxWiki. WxWidgets Compared To Other Toolkits. 2012.
url: https://wiki.wxwidgets.org/WxWidgets_Compared_To_Other_Toolkits.
[wxW14] wxWiki. Compiling and getting started. 2014.
url: https://wiki.wxwidgets.org/Compiling_and_getting_started.
[wxW15a] wxWiki. Bindings. 2015.
url: https://wiki.wxwidgets.org/Bindings.
[wxW15b] wxWiki. Microsoft Visual C++ Guide. 2015.
url: https://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide.
[wxW98] wxWidgets. wxWindows Library Licence. 1998.
url: https://www.wxwidgets.org/about/licence/.
Related post:
No comments:
Post a Comment