Apakah wxWidgets?
Meskipun sangat mungkin bahwa Anda akan membaca dokumen ini jika Anda tidak tahu apa wxWidgets adalah, mari kita secara singkat menyebutkan bahwa wxWidgets adalah C + + framework untuk membangun aplikasi yang kaya GUI dari satu sumber yang kemudian dapat dikompilasi pada sistem operasi yang berbeda , menghasilkan aplikasi asli pada setiap sistem. wxWidgets menggunakan kontrol asli (atau widget) dan fungsi asli lainnya sedapat mungkin sehingga aplikasi yang dihasilkan akan terlihat dan merasa sebagai pribumi mungkin, dan mereka biasanya tidak dibedakan dari aplikasi yang ditulis menggunakan toolkit platform tunggal seperti MFC untuk Windows, GTK + untuk Linux atau kakao di bawah OS X. Di beberapa daerah (seperti seni grafis atau installer), adaptasi ke platform individu harus dilakukan untuk mencapai integrasi sempurna dengan platform tersebut.
Sistem operasi utama yang wxWidgets mendukung adalah Windows (Windows 95, NT, 2000, XP, Vista) termasuk varian mobile-nya (Windows CE, PocketPC, Windows Mobile), Linux dan Unix menggunakan GTK + 2 toolkit (versi minimum GTK + 2.4 , fitur lebih baru digunakan ketika tersedia) dan Mac OS X (minimal versi 10.4 Tiger, baik Intel, PPC dan Universal Binari untuk kedua yang didukung). wxWidgets termasuk potongan kode banyak untuk mengoptimalkan dialog dan tata letak umum untuk layar kecil seperti orang-orang dari netbook baru dan ponsel dan tablet.
Ada berbagai dukungan untuk platform lain atau toolkit seperti OS / 2, Motif, GTK 1.2, PalmOS dan berbagai varian mobile Linux menggunakan GTK + atau kerangka Hildon dan juga versi untuk OS X menggunakan API Kakao dan bahkan iPhone SDK.
Dokumentasi di doxygen
Sampai wxWidgets 3.0 semua dokumentasi ditulis dalam varian LaTeX disesuaikan diciptakan untuk proyek tahun lalu. Meskipun ada alat yang dapat mengurai kelas secara otomatis dan membuat kerangka dokumentasi, dokumentasi kelas merepotkan untuk memperbarui dan karena itu sering ketinggalan jaman. Dalam rangka untuk memperbaiki situasi ini, seluruh dokumentasi termasuk referensi dan ikhtisar diubah menjadi format doxygen disesuaikan inline dalam satu set khusus header. Meskipun banyak kelas dikonversi otomatis dalam satu langkah tunggal, setiap dokumentasi kelas harus diperbaiki dengan tangan membuat ini salah satu upaya terbesar dalam siklus pembangunan terkemuka Facebook wxWidgets 3.0. Selain itu, alat ditulis untuk secara otomatis membandingkan tanda tangan dari metode kelas banyak dokumentasi. Hasilnya adalah lebih dokumentasi yang benar dengan pembentuk yang lebih baik dan built-in mencari dan screenshot banyak kontrol. Karena doxygen adalah menyebar-format lebar dan mudah untuk belajar, dokumentasi baru jauh lebih mudah untuk mengedit, benar dan membaca.Lihat wxWidgets on line dokumentasi- yang mengacu pada dokumen ini di banyak tempat.
C + + fitur dan dukungan template
Proyek wxWidgets mencoba untuk bergerak kedua dengan perkembangan baru dari bahasa C + + serta dukungan compiler yang lebih tua ke tingkat yang tidak menghambat perkembangan lebih lanjut dan memang kegunaan dari keseluruhan proyek. Karena dukungan untuk template digunakan untuk menjadi terbatas pada beberapa kompiler dan sering buggy bahkan di dalamnya, wxWidgets awalnya tinggal jauh dari menggunakan template seluruhnya termasuk penggunaan Standard Template Library (STL).Sementara itu hampir semua compiler telah mendapatkan dukungan template padat dan karenanya wxWidgets sekarang menggunakan template untuk kelas kontainer (seperti wxVector ), pointer pintar (seperti wxSharedPtr ), referensi lemah (lihat wxWeakRef ) dan banyak tempat lainnya di mana template berguna. Ini berarti bahwa kompiler tua sangat tidak akan dapat mengkompilasi wxWidgets lagi atau hanya dengan cara yang rusak (seperti Visual C + + 6.0).
Fitur dan platform kompatibilitas mundur
Dalam cara yang sama wxWidgets mencoba kedua menggunakan fitur baru dari sistem operasi yang berbeda dan dukungan sistem lama selama mungkin dan selama mendukung mereka tidak menghalangi pengembangan sistem up-to-date. Hal ini terutama berlaku untuk OS X dan GTK + 2 dan itu, diputuskan bahwa OS X versi lama dari 10,4 Tiger dan GTK + 2 versi lebih tua dari 2.4 tidak lagi didukung. Tim wxWidgets juga menyadari bahwa hal itu tidak bisa melakukan segalanya dan bahwa dukungan untuk database cross-platform API berada di luar lingkup dan fokus dari proyek sehingga kelas tua database konektivitas wxODBC telah dihapus dari proyek. Ada banyak cross-platform database perpustakaan yang tersedia dan banyak dari mereka yang lebih baik dari wxODBC lama dan semuanya terjaga dengan baik.
Unicode: Single A Membangun untuk Semua Orang
Sampai versi 3.0 selalu ada dua versi yang berbeda (atau membangun) dari wxWidgets: satu dengan dukungan penuh untuk Unicode di mana masing-masing karakter diwakili oleh wchar_t internal (menggunakan dua byte bawah Windows dan empat byte hampir di tempat lain) dan lain yang disebut ANSI membangun di mana masing-masing karakter diwakili oleh sebuah byte tunggal. Model ini dipilih mengikuti model API Windows asli dan pada titik waktu ketika dukungan Unicode hampir tidak ada di tempat lain. Sementara itu, dunia Windows bersama-sama dengan proyek-proyek seperti Jawa telah memilih UTF-16 sebagai representasi asli untuk string Unicode sedangkan banyak dunia perangkat lunak bebas termasuk GTK + dan bagian dari Mac OS X telah memilih UTF-8. Oleh karena itu diputuskan untuk secara drastis mengubah pelaksanaan string kelas wxWidgets dan membuatnya menggunakan UTF-16 di bawah Windows (kebanyakan seperti sebelumnya) tapi UTF-8 di tempat lain (bukan karakter string luas dengan menggunakan wchar_t) sehingga string yang diterima dari dan dikirim ke Unix dan panggilan GTK + perpustakaan tidak lagi harus dikonversi bolak-balik antara representasi Unicode berbeda (lihatwxString dan gambaran Unicode ). Selain itu, modus ANSI telah dihapus dan kelas wxString serta beberapa kelas lain yang dimodifikasi untuk menerima dan kembali baik dan-bit Unicode string literal 8 jika diperlukan. Hal yang sama juga dilakukan untuk fungsi seperti wxPrintf () dll Meskipun perubahan ini akhirnya tidak akan terlihat oleh pengguna akhir dari sebuah aplikasi yang ditulis menggunakan wxWidgets, itu adalah suatu perubahan mendasar bahwa itu adalah alasan utama untuk memberikan wxWidgets versi mayor baru nomor 3.
Menggambar 2D Baru Kode
Meskipun gambar 2D API selalu menjadi bagian dari wxWidgets (menggunakan perangkat yang disebut konteks-jadi seperti jendela atau bitmap dan pena dan kuas untuk menarik ke dalam mereka, lihat wxDC, wxPen , wxBrush ), itu tidak banyak berubah sejak awal awal dan kode benar-benar reorganisasi menggunakan satu set kelas frontend dan backends berbeda yang akan membuat perawatan lebih mudah tanpa harus merawat biner kompatibilitas mundur dan juga membantu mengisolasi sejumlah perbedaan platform halus. tua API Gambar cukup baik untuk banyak tugas dan mencerminkan capabilites gambar tahun 1990-an tetapi tidak memanfaatkan fitur-fitur canggih seperti transparansi, anti-aliasing dan bebas matriks transformasi modern sistem grafis 2D seperti GDI + pada Windows, Kairo di Linux (dan tempat lain) dan CoreGraphics pada OS X. Oleh karena itu benar-benar baru gambar API (yang disebut grafis sehingga konteks, lihat wxGraphicsContext ) ditambahkan untuk wxWidgets memanfaatkan mesin gambar modern. Hal ini dilengkapi dengan kelas bitmap dengan alpha channel dukungan dan akses baku cepat ke data internal representasi's bitmap. Selain API dari semua konstanta kelas GDI yang ada telah diperbaiki sehingga wxMODERN menjadi wxFONTFAMILY_MODERN, wxSOLID menjadi wxBRUSHSTYLE_SOLID dll dan penghitungan sistem referensi yang ramping dan dibuat identik pada semua platform.
Perubahan wxBase
wxBase adalah nama dari bagian non-GUI wxWidgets perpustakaan yang menyediakan kelas dasar seperti wxString kelas atas, kelas kontainer, serta kelas untuk threading, networking, parsing XML, path dan manajemen konfigurasi, logging, debugging dll fungsi dan kelas telah dipisahkan ke dalam perpustakaan mereka sendiri baik untuk mampu menulis non-GUI aplikasi serta membuat perawatan lebih mudah melalui saling ketergantungan berkurang.
Banyak perubahan wxString dan kelas kontainer berlokasi di wxBase, tetapi di atas dukungan yang dapat wxBase loop ditambahkan untuk acara, timer dan soket untuk menulis klien berdasarkan aktivitas atau aplikasi server dengan wxWidgets 3.0. Kode soket itu sendiri telah dilakukan penataan menghapus banyak kode digandakan dan menjatuhkan pelaksanaan sebelumnya yang dipisahkan ke dalam C dan C + + bagian.
Baru kontrol dan lainnya utama GUI tambahan untuk semua port
Dokumen ini tidak bisa daftar setiap memperbaiki bug dan perubahan minor. Sebaliknya, ayat ini merangkum perubahan yang paling relevan dengan kelas GUI dari wxWidgets. Mengingat sifat wxWidgets 'sebagai perpustakaan GUI, perubahan ini juga kemungkinan besar akan terlihat bagi pengguna dan dengan demikian mungkin perubahan yang paling penting dari sudut pandang pengguna (walaupun belum tentu dari perspektif pengembang):
- wxDataViewCtrl, wxDataViewTreeCtrl dan wxDataViewListCtrl: kontrol ini sebagian dapat menggantikan baik wxListCtrl dan wxTreeCtrl (yang hanya ada adalah versi asli dari Windows dan sebagian untuk OS X), tetapi juga meluas dan menggabungkan kelas-kelas dengan mampu menampilkan hirarki dan daftar di sama waktu dan dengan menawarkan lebih fleksibel banyak cara untuk menampilkan dan mengedit data pada basis per kolom. Reimplementing wxTreeCtrl dan mungkin wxListCtrl dalam hal wxDataViewCtrl dianggap, tapi ini dijatuhkan sebagai fitur khusus tertentu tidak tersedia pada semua platform (atau berbeda). Lihat juga wxDataViewCtrl ,wxDataViewTreeCtrl dan wxDataViewTreeCtrl .
- Tampilan tabel dari wxGrid telah ditingkatkan termasuk kontrol header asli, yang telah dipisahkan ke dalam kontrol baru. Lihat juga wxGrid dan wxHeaderCtrl.
- Ditambahkan wxPropertyGrid yang merupakan kontrol generik yang besar digunakan untuk menampilkan daftar dan hirarki-nilai pasangan nama. Seperti wxDataViewCtrl, ia menawarkan sejumlah-untuk-menggunakan editor siap untuk mengedit teks, angka, daftar, font, nama file dll menggunakan tempat editing dalam atau menggunakan pop-up dialog dan kotak combo.Developement dari wxPropertyGrid sejauh ini terjadi di luar wxWidgets sebagai proyek terpisah, tapi belum termasuk dalam wxWidgets per se. Lihat juga wxPropertyGrid .
- wxHyperlinkCtrl menambahkan, dilaksanakan native bawah GTK + dan dengan cara yang umum pada platform lainnya. Hal ini dapat digunakan untuk mewakili sebuah link hypertext, misalnya ke situs pengembang atau perusahaan. Lihat juga wxHyperlinkCtrl .
- wxFileCtrl untuk membangun dialog file disesuaikan sepenuhnya. Melengkapi ini, kemungkinan untuk menambahkan kontrol kustom untuk wxFileDialog telah ditambahkan. Lihat wxFileCtrl danwxFileDialog .
- Beberapa perangkat tambahan untuk wxRichTextCtrl termasuk dukungan untuk super-dan subscript dan banyak kecepatan-up. Lihat wxRichTextCtrl .
- Kemungkinan untuk menampilkan ikon negara telah ditambahkan ke wxTreeCtrl. Ini juga dapat digunakan untuk menerapkan check-kotak seperti perilaku. Lihat wxTreeCtrl .
- wxCalendarCtrl telah ditulis ulang menggunakan kode asli di bawah MSW dan GTK + dan ditingkatkan dalam berbagai cara (misalnya menampilkan jumlah minggu). Lihat wxCalendarCtrl .
- Penerapan dukungan untuk auto-penyelesaian untuk wxTextCtrl dan wxComboBox.
- Ditambahkan wxAUIToolBar ke set dari kelas wxAUI, yang lebih terintegrasi dan lebih fleksibel daripada wxToolBar standar.
- Reimplemented wxBitmapComboBox menggunakan kode asli di bawah MSW dan GTK +. Lihat jugawxBitmapComboBox .
- Ditambahkan dukungan untuk ellipsization pada semua platform dan untuk mark-up format di bawah GTK + untuk wxStaticText. Lihat wxStaticText .
- Ditulis ulang acara pemilihan logika emisi wxListBox pada semua platform untuk lebih sama persis satu sama lain ketika memilih dan tidak memilih item tertentu.
- Ditambahkan multi-sample dan anti-aliasing mendukung OpenGL dan kanvas terpisah wxGLCanvas dan wxGLContext. Lihat wxGLCanvas .
- wxNativeContainerWindow Ditambahkan untuk membangun wxTopLevelWindow dari jendela asli handle (MSW dan GTK +).
- The wxVScrolledWindow kelas telah sepenuhnya ditulis ulang untuk mengakomodasi penambahan varian bergulir horisontal baru ( wxHScrolledWindow dan wxHVScrolledWindow ) tetap menyediakan kompatibilitas mundur lengkap untuk wxVScrolledWindow.
wxMac spesifik perubahan (sekarang disebut wxOSX)
Satu perubahan penting port wxMac adalah bahwa port tidak disebut wxMac lagi. Sebaliknya, istilah yang lebih tepat wxOSX harus digunakan sebagai sistem operasi ini disebut OS X saat ini dan - lebih penting - wxWidgets sekarang memiliki dukungan sebagian untuk iPhone dan iPod, dan hal ini jelas tidak perangkat Mac. Selain perubahan nama - wxMac telah mengalami perubahan yang paling mendasar dari tiga pelabuhan utama, bahkan jika beberapa perubahan kebanyakan reorganisasi kode daripada menulis kode baru. Kode telah direorganisasi menjadi kode umum (umum untuk Karbon, Kakao dan Kakao Touch) termasuk pembungkus umum atau kelas front-end untuk banyak kode GUI serta pembungkus kelas CoreFoundation disebut OS X, yang bertanggung jawab pada semua varian OS X untuk manipulasi string, dukungan font, grafis dan fungsi dasar lainnya (CoreImage dan CoreVideo baru-baru ini telah ditambahkan oleh Apple) dan kode tergantung toolkit untuk Karbon, Kakao dan Kakao Touch API. Varian Karbon merupakan inti dari apa yang digunakan untuk menjadi wxMac dan merupakan versi yang paling stabil dan matang. Alasan di balik menambahkan dukungan opsional untuk Kakao dan Kakao Touch adalah bahwa Carbon tidak tersedia di iPhone sama sekali dan yang telah usang untuk semua versi 64-bit OS X, yang kemungkinan akan menjadi default beberapa tahun dari sekarang. Jadi dengan aplikasi ini menggunakan wxOSX disarankan untuk menggunakan Karbon backend karena jatuh tempo, developement masa depan harus fokus pada backend Kakao.
Sebagai bagian dari restrukturisasi, semua kode gambar yang tersisa dengan menggunakan API lama QuickDraw telah dihapus (itu hanya opsi sebelumnya) dan menggambar sekarang selalu terjadi dengan menggunakan CoreGraphics. Demikian juga, semua kode menggunakan fungsi Carbon tidak lagi hadir di OS X 10.4 telah dihapus untuk membersihkan-up kode sangat. Ini berarti,, seperti yang disebutkan di atas, bahwa aplikasi akan memerlukan minimal OS X 10.4 dalam rangka untuk menjalankan, lebih baik lagi OS X 10.5.
Terlepas dari perubahan besar, fitur tambahan dapat dicatat:
- Dukungan yang lebih baik untuk IconRef
- Sebuah memperbaiki duplikat entri menu di locales non-Inggris
- Accelerators boleh digunakan untuk tombol
- wxLocale:: GetInfo () diimplementasikan dengan menggunakan CFLocale
wxGTK spesifik perubahan
Tugas port + GTK dari wxWidgets adalah untuk mengikuti perkembangan GTK + perpustakaan karena memiliki kebiasaan menambahkan kontrol baru atau API baru jika kode yang sudah ada terlalu terbatas dan tidak dapat diperbaiki dengan cara yang kompatibel. Masalah utama dari pendekatan ini adalah bahwa aplikasi yang ditulis menggunakan bekerja wxGTK shoud dengan relatif versi lama dari GTK + tetapi juga harus memanfaatkan fitur terbaru. Dalam beberapa kasus, mendukung versi lama dari GTK + menghalangi pembangunan sehingga kami memutuskan untuk menyatakan GTK + toolkit 2.4 versi minimal yang didukung. Sebagai contoh, ini memungkinkan untuk selalu menggunakan dialog GTK + file daripada dialog file lama generik yang harus digunakan ketika GTK + tidak memiliki file dialog yang dapat digunakan.
Bagian lain dari wxGTK yang ditulis ulang atau yang mengalami update besar termasuk, namun tidak terbatas pada:
- wxToolbar sekarang menggunakan "baru" GTK + toolbar API
- wxChoice sekarang menggunakan GtkComboBox bukan GtkOptionMenu ditinggalkan
- wxComboBox sekarang selalu menggunakan GtkComboBox bukan kelas GtkCombo usang
- URL menyeret menggunakan "text / x-moz-url" di wxURLDataObject
- Ditambahkan backend pencetakan benar-benar baru menggunakan dengan dialog GtkPrint dan Kairo
- Kode ditulis ulang acara generasi idle
- Tab traversal sekarang dilakukan native oleh GTK + bukan menurut wxWidgets
- layout menulis ulang dari menubar wxFrame's, toolbar, jendela klien dan statusbar menggunakan GtkVBox bukan perhitungan kita sendiri
- Benar dilaksanakan SetSize () dan GetSize () untuk windows level atas meskipun masalah yang ditakuti dengan dekorasi jendela milik Manajer Window dan bukan jendela itu sendiri
- Ditambahkan sebuah API asynchronous untuk wxClipboard untuk menghindari panggilan wxYield () dari dalam itu (yang menyebabkan masalah reentrance).
- Beberapa dukungan untuk kontrol Hildon dari platform Maemo digunakan untuk tablet Nokia
wxMSW spesifik perubahan
wxMSW adalah platform yang paling matang, terutama karena paling sering digunakan dan tentunya memiliki pengguna terbesar, tester dan basis pengembang, tetapi juga karena sistem Windows mendasar itu telah lebih berhasil dalam melestarikan kompatibilitas mundur. Oleh karena itu, daftar perubahan wxMSW-spesifik lebih kecil dan perubahan biasanya detail kecil jika dibandingkan dengan perubahan dua pelabuhan utama lainnya:
- Penerapan wxCheckListBox melihat lebih asli dan menambahkan kemampuan untuk menyimpan data klien di dalamnya
- Izinkan tooltips lagi
- Dukungan untuk label multiline di wxCheckBox dan wxToggleButton
- Lebih tepat pratinjau cetak
- Tampilkan mengubah ukuran gripper dalam dialog resizable
0 ɹɐʇuǝɯoʞ:
Posting Komentar