দাবি পরিত্যাগী: আমি সম্পর্কে কিছু জানতাম না দ্রুত পর্যন্ত আমি তোমার পোস্ট, অথবা যে বিষয়টি জন্য সাধারণভাবে GUI প্রোগ্রামিং সম্পর্কে পড়তে। অতএব আমার কাছে সত্যই এই প্রশ্নের উত্তর দেওয়ার কোনও ব্যবসায় নেই :)
বলেছিল, দ্রুত একটি ঝরঝরে প্রকল্প is আমি বয়লারপ্লেট উত্সটি সংক্ষিপ্তভাবে স্ক্যান করেছি এবং তালিকাস্টোর ব্যাকযুক্ত তালিকা-শৈলীর পছন্দ যুক্ত করার জন্য নিম্নলিখিত সম্ভাব্য পন্থাগুলি সনাক্ত করেছি:
- 'বানর-প্যাচ' ডেটা / ইউআই / পছন্দসমূহ $ প্রকল্পের নাম $ ডায়ালগ.উই গ্ল্যাডের সাথে সংজ্ঞায়িত হিসাবে স্টিরিভিউ উইজেট (ডাব্লু / লিস্টস্টোর মডেল) স্ট্যাজে উইজেট_মোথডগুলি সেট করুন এবং সেট করুন।
- প্রিফারেন্সস ডায়ালগের প্রকল্পের সাবক্লাসটি প্রয়োগ করুন
set_widget_from_preference
এবং set_preference
সাবক্লাসে অগ্রাধিকারগুলি $ প্রকল্প প্রকল্প J ডায়ালগ রয়েছে এবং আপনার লিস্টস্টোর সমর্থিত ট্রিভিউউউজেট key
বা যখন widget
থাকবেন তখন আলাদা কিছু করুন ।
- গ্লেডের সাথে মিলে যাওয়া কাস্টম উইজেটের সাথে জিটিকে.ট্রিভিউয়ের একটি কাস্টম সাবক্লাস লিখুন ।
এগুলি পরীক্ষা করে দেখার জন্য, আমি এই তিনটি ধারণাকেই বাস্তবায়িত করেছি - প্রত্যেকে ইচ্ছাকৃতভাবে কাজ করেছে, এবং এএএএএফসিটি, একইরকম। শেষ পর্যন্ত, তৃতীয়টি (বিশেষত) আমার কাছে সবচেয়ে পরিষ্কার এবং প্রথমদিকে বিপরীত আশা করা সত্ত্বেও, বয়লারপ্লেট জুড়ে ব্যবহৃত কনভেনশনগুলির কাছাকাছি মনে হয়েছিল।
আমি তিন নম্বরের জন্য যে পদক্ষেপগুলি অনুসরণ করেছি তা এখানে ...
quickly design
(দ্রুত ১১.১০, বিটিডব্লিউ) মাধ্যমে গ্ল্যাড ব্যবহার করে এবং শিথিলভাবে এই টিউটোরিয়ালটি অনুসরণ করুন ( খণ্ড ২) , পছন্দগুলি $ প্রকল্প প্রকল্প to ডায়ালগ.উইতে একটি স্ক্রোলড উইন্ডো উইজেট যুক্ত করুন, তার উপর একটি ট্রিউইউ ফেলে দিন, ট্রিভিউয়ের নাম দিন language_treeview
। যখন অনুরোধ করা হবে তখন ট্রিভিউয়ের জন্য একটি নতুন তালিকা স্টোর মডেল তৈরি করুন এবং ভাষা_লিস্টস্টোর ইত্যাদি নাম দিন ... শেষ পর্যন্ত আমি এরকম কিছু দিয়ে শেষ করেছি:
এরপরে, নিম্নলিখিত বিষয়বস্তুগুলির সাথে একটি গ্লেড ক্যাটালগ (ডেটা / ui / পছন্দ_ $ PROJECTNAME $ _treeview.xML) যুক্ত করুন:
<glade-catalog name="preferences_$PROJECTNAME$_treeview" domain="glade-3"
depends="gtk+" version="1.0">
<glade-widget-classes>
<glade-widget-class title="$PROJECTNAME$ Preferences TreeView" name="Preferences$PROJECTNAME$TreeView"
generic-name="Preference$PROJECTNAME$TreeView" parent="GtkTreeView"
icon-name="widget-gtk-treeview"/>
</glade-widget-classes>
</glade-catalog>
তারপরে, অগ্রাধিকারগুলি সম্পাদনা করুন $ PROJECTNAME $ ডায়ালগ.উই, যুক্ত করে ...
<!-- interface-requires preferences_$PROJECTNAME$_treeview 1.0 -->
... শীর্ষে, প্রয়োজনীয় ট্যাগের নিচে। এবং পরবর্তী ধাপের প্রস্তুতির জন্য ভাষা_ট্রিভিউয়ের শ্রেণি বৈশিষ্ট্যটিকে পছন্দসমূহ $ PROJECTNAME $ ট্রিভিউতে পরিবর্তন করুন।
পরিশেষে, পছন্দসমূহ $ PROJECTNAME $ Dialog.py এ উইজেট_মাদিত তালিকায় নিম্নলিখিত উপাদানটি যুক্ত করুন
'language_treeview': ['get_languages', 'set_languages', 'button-release-event']
এবং একই ফাইলটির শেষে (পছন্দসমূহ $ PROJECTNAME $ Dialog.py) যোগ করুন
import gtk
ALL_LANGUAGES = [
'en', 'uk', 'de', 'fr', # ... much longer list
]
class Preferences$PROJECTNAME$TreeView(gtk.TreeView):
__gtype_name__ = "Preferences$PROJECTNAME$TreeView"
def __init__(self, *args):
super(Preferences$PROJECTNAME$TreeView, self).__init__(*args)
self.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
# loads the liststore with all languages,
# selecting/highlighting in the treeview those
# already retrieved from previously saved preferences
def set_languages(self, preferred_languages):
model = self.get_model()
for row, lang in enumerate(ALL_LANGUAGES):
model.append([lang])
if lang in preferred_languages:
self.get_selection().select_iter(model.get_iter(row))
# collects only the selected languages in the treeview
# to save in the preferences database
def get_languages(self):
model, rows = self.get_selection().get_selected_rows()
result = [model.get_value(model.get_iter(row), 0) for row in rows]
return result
আপনি যদি আমার এবং দু'একবারের প্রচেষ্টা দেখতে আগ্রহী হন তবে আমি বাধ্য হয়ে খুশি।
সম্পাদনা করুন: নৈমিত্তিক পাঠকের জন্য, আপনার দ্রুত প্রকল্পের প্রকৃত নাম (যেমন উল্লিখিত হয়েছে ) এর সাথে $ PROJECTNAME of এর যে কোনও ঘটনাকে প্রতিস্থাপন করুন ।quickly create
আছে HTH!