منبع اصلی نوشتار زیر در این لینک قرار دارد

StarCalendar 2.4.0

انتشار استارکلندر 2.4.0


دانلود:

starcal-2.4.0.tar.gz

starcal2-2.4.0-1.noarch-openSUSE.rpm

starcal2_2.4.0-1_all.deb


Github Release


تغییرات نسبت به نسخهٔ 2.3.4


۱- کاهش زمان لازم برای شروع شدن برنامه

اصطلاحاً Laziness (تنبلی) برنامه به حداکثر خودش رسیده. اون ماژول‌ها و کدهایی که برای شروع کار برنامه لازم نیستن، در شروع برنامه، لود نمیشن و هر موقع که بهشون نیاز شد لود میشن.

میزان کاهش این مدت زمان، کاملاً بستگی به تنظیمات شما، تعداد رویدادها و ... داره. ممکنه بین ۲۰ تا ۶۰ درصد کاهش پیدا کنه.

امیدوارم کاربرانی که از زمان اجرای برنامه شکایت می‌کردن راضی شده باشن :)


۲- کاهش زمان باز شدن پنجرهٔ مدیریت رویدادها برای اولین بار

در پنجرهٔ مدیریت رویدادها، درخت رویدادها بطور کامل نمایش داده میشد که اگه تعداد رویدادهای شما زیاد بود، تشکیل این درخت در رابط گرافیکی، که در اولین باز کردن «این پنجره» انجام میشد، زمان زیادی طول می‌کشید. ضمن اینکه RAM زیادی هم اشغال می‌کرد.

در این ورژن، رویدادهای داخل یک گروه غیرفعال، در درخت لود نمیشه و نمایش داده نمیشه، مگه اینکه اون گروه رو فعال کنید.

چون فرض میشه کاربر معمولاً نیازی به ویرایش محتویات یک گروه غیرفعال نداره. اگر هم داره، می‌تونه اون رو فعال و دوباره غیرفعال کنه. با غیرفعال کردن گروه، محتویاتش در درخت، ناپدید *نمیشه*. چون هدف اصلی، کاهش زمان اولین باز شدن پنجره بود.


۳- نماد وضعیت

اصطلاح انگلیسی Tray Icon که ترجمهٔ خوبی به فارسی نداشت، به اصطلاح کلی‌تر و دقیق‌تر Status Icon تغییر کرد که ترجمه میشه به «نماد وضعیت»

یعنی دیگه کلمهٔ Tray در هیچ‌جای برنامه (نه رابط گرافیکی، نه کد) دیده نمیشه.

همینطور مسیر فایل‌های svg آیکون‌ها تغییر کرده و از پوشهٔ pixmaps به پوشهٔ مجزای status-icons جابجا شدن.

به همین خاطر، «نماد وضعیت» به حالت پیش‌فرض برمی‌گرده و اگه چیز دیگه‌ای (از بین آیکون‌های svg خود برنامه) گذاشته بودید، باید دوباره تغییر بدید.


۴- کپی یک رخداد (Occurence) از یک رویداد تکرارشونده

وقتی روی متن یک رویداد که در پنجرهٔ اصلی (احتمالاً زیر تقویم ماه/هفته) راست‌کلیک کنید، اگر این رویداد یک رویداد تکرارشونده (مثلاً هفتگی، ماهیانه یا سالیانه...) باشه، یک گزینهٔ «کپی بعنوان کار به...» اضافه میشه (یا « بعنوان کار تمام‌روز به...» درصورتیکه که رویداد تمام‌روز باشه). که می‌تونید یک رخداد/نمونهٔ خاص از این رویداد رو کپی کنید به همون گروه یا گروه دیگه، و مثلاً می‌تونید عنوان یا متن این «کار» یا «کار تمام‌روز» رو تغییر بدید.

هنوز این قابلیت در برنامه وجود نداره که برای هر رخداد/نمونه از یک رویداد تکرارشونده، بشه یادداشت یا متن مجزا اضافه کرد یا حتی یک Occurence رو جدا (exclude) کرد از رویداد اصلی. ولی با این قابلیت کپی رخداد/نمونه که اضافه شده، فعلاً تا حدی میشه این‌گونه نیازها رو برآورده کرد.


۵- رفع مشکل پخش صدای اذان در افزونهٔ اوقات شرعی

در نسخه‌های قبل بخاطر اینکه برای زمان‌بندی پخش فایل صوتی، از ماژول gobject و تابع timeout_add استفاده می‌شد، اگه در حال اجرای استارکل، کامپیوترتون رو suspend می‌کردید، زمان پخش صوت با مشکل مواجه میشد.

به همین خاطر من به ماژول threading خود پایتون سوییچ کردم و این مشکل بطور کلی حل شد. الآن میشه گفت زمان پخش فایل اذان (و پیش‌اذان) دقیق هست.


۶- راست‌به‌چپ و مختصات منوها

از اولین نسخه‌های برنامه تا حالا، با راست‌به‌چپ کم‌وبیش مشکل داشتم(که به تدریج این مشکلات کمتر شد)، شاید کاربران مشکل چندانی مشاهده نمی‌کردن، ولی مثلاً مختصات باز شدن menu ها مشکل داشته چون به gtk و سیستم‌عامل باید مختصات مطلق menu از گوشهٔ چپ و بالا، داده بشه، در حالیکه در حالت فارسی و راست‌به‌چپ، menu باید سمت راست جایی که کاربر کلیک می‌کنه باز بشه و محاسبهٔ عرض منو قبل از باز شدنش کار خیلی مشکلی بود

در این نسخه، مختصات منوها کلاً بهبود پیدا کرده، مخصوصاً برای فارسی.


۷- تغییر صفحهٔ خانگی برنامه به گیت‌هاب

مدت‌ها بود آخرین کدهای برنامه روی github بود، ولی بخاطر تاریخچه و عمومیت سورس‌فورج، آرشیو انتشارهای برنامه رو توی سورس‌فورج هم می‌گذاشتم.

ولی بالأخره دست از سورس‌فورج برداشتیم و صفحهٔ خانگی پروژه رو تغییر دادیم به:

ilius.github.io/starcal


۸- بروزرسانی ماه‌های قمری و مناسبت‌ها طبق تقویم رسمی ۱۳۹۴

طبق معمول هر سال، مطابق با تقویم رسمی سالانهٔ ایران (که ۳-۴ ماه مونده به نوروز، توسط مؤسسهٔ ژئوفیزیک دانشگاه تهران منتشر میشه)، دیتای مربوط به طول ماه‌های قمری، و همینطور تغییراتی که در مناسبت‌های رسمی کشور داده شده بود، در استارکلندر هم آپدیت و اعمال شد.


۹- تغییر در نیازمندی‌های برنامه و سایر تغییرات

نیازمندی به پکیج pytz کلاً برداشته شد و دیگه از pytz استفاده نمی‌کنیم

این نصب برنامه رو راحت‌تر و سریع‌تر می‌کنه، چون این پکیج، دیتای مناطق زمانی رو در خودش داره و حدود ۴۶۰ کیلوبایت حجم داره (حجم کل استارکل کمتر از ۶۰۰ کیلوبایته)

در این نسخه، این کتابخونه با کدی جایگزین شده که از دیتای مناطق زمانی که توی خود گنو/لینوکس هست استفاده می‌کنه.

در نتیجه این نسخه با ویندوز سازگار نخواهد بود

سعی می‌کنم در نسخه‌های بعد، سازگاری با ویندوز رو هم به این کد اضافه کنم


ضمناً، نیازمندی اختیاری به کتابخونه python-dateutil هم اضافه شده که فقط برای صدور به iCalendar یا ics استفاده میشه. و بدون نصب این کتابخونه هم، برنامه اجرا میشه و کار می‌کنه.


و خب طبق معمول باگ‌هایی که پیدا شدن رو برطرف کردم و تمیزکاری‌هایی در کد انجام دادم