Перейти до основного вмісту

Публікації

Показано дописи з листопад, 2010

Моя перша зустріч з Mercurial

Довелось мені зустрітись з системою контроля версій Mercurial. Причиною зустрічі стала моя цікавість до мови Google Go. Пішев, значить, в мануал, як же його встановити на мою Ubuntu. Ну, встановив prerequisites, потім мені запропонували стягнути найсвіжішу версію з репозиторія. Цей репозиторій, як ви вже здогадались, знаходиться на гуглокоді під керуванням mercurial. Команда клонування репозиторія виглядає так: $ hg clone -r release https://go.googlecode.com/hg/ go При клонуванні помітив одну таку дуже недружню для користувача фічу, як відсутність будь-якої нотифікації про процес завантаження змін по файлах (раніше працював з svn і git, і там такої проблеми не виникало). При невеликому розмірі репозиторія, та ще при хорошій пропускній здатності Інтернету проблему, мабуть, можна і не помітити. Але мій 2Гбіт на цьому проекті дуже надолво задумався =(. Ось таке якесь негарне перше враження.

Проблеми з локалізацією кнопок діалогового вікна wx.MessageDialog

Е-е-ех, де ж ти, крос-платформовість? Клас wx.MessageDialog має різну реалізацію на різних операційних системах. Власне, на ОС GNU/Linux цієї проблеми зовсім немає, оскільки це діалогове вікно реалізоване засобами wxWidgets, а переклад кнопок відбувається через стандартный механізм інтернаціоналізації wxPython . Зовсім по-іншому все виглядає ОС Windows. wx.MessageDialog на ОС Windows Для ОС Windows це діалогове віккно реалізоване засобами операційної системи (лінь, мабуть, було зробити по-іншому). Власне, маємо виклик функції  MessageBox  з  Windows API . А тому вся інтернаціоналізація відбувається також засобами операційної системи, і влізти в цей процес ми ніяк не можемо, а вікна, які відображаються наполовину однією мовою, наполовину іншою, - зовсім не прикрашають додаток і його автора. Світло в кінці тунелю Так, воно є. Вихід очевидний - написати власний діалог на базі wx.Dialog . Приклад можна глянути в wxDemo . Добре те, що при заміні старого діалогу новим не доводиться пер

Python: як програмно перемкнути розкладку клавіатури в Windows

Дослідивши дане питання, я побачив, що Python не має засобів "з коробки" для вирішення цієї задачі. Відвоідно, задача повинна вирішуватись для каждої ОС своїм шляхом. Дане рішення було знайдено мною для ОС Windows XP +. Панацея - Win API Для того, щоб виконати завдання необхідно встановити додатково бібліотеку pywin32 , яка надає доступ до функцій Windows API з Python. З цієї бібліотеки нам знадобиться модуль win32api . >>> import win32api Дослідивши його вміст, можна побачити, що для роботы з розкладкою клавіатури є декілька функцій і одне системне повідомлення Windows - WM_INPUTLANGCHANGE : GetKeyboardLayout GetKeyboardLayoutList LoadKeyboardLayout В даному випадку для нас важлива саме остання функція - LoadKeyboardLayout . Дана функція завантажує нову розкладку (якщо вона ще не завантажена) і виконує після цього ще якісь дії; приймає в якості аргументів два: рядок з ідентифікатором розкладки. дію. Більш детально про їхні можливі значення можна почитати в MSDN . О