Глобальная горячая клавиша для приложения Python в Gnome

Проблема в том, что GridFieldDetailForm_ItemRequest::getFormActions() не вызывает $this->record->getCMSActions(), вместо этого он определяет свой начальный список действий как $actions = new FieldList();.

Я предполагаю, что вы управляете своим DataObject через ModelAdmin.

Вы можете добавить расширение к этому классу и добавить поля таким образом (но это неоптимально):

# File: app/_config/extensions.yml
SilverStripe\Forms\GridField\GridFieldDetailForm_ItemRequest:
  extensions:
    MyExtension: MyExtension

И ваше расширение может выглядеть так:

owner->getRecord();
        // This extension would run on every GridFieldDetailForm, so ensure you ignore contexts where
        // you are managing a DataObject you don't care about
        if (!$record instanceof YourDataObject || !$record->exists()) {
            return;
        }

        $actions->push(FormAction::create('copy', _t('SiteBlockAdmin.Copy', 'Copy'))
            ->setUseButtonTag(true)
            ->setAttribute('data-icon', 'arrow-circle-double'));
        $actions->push(DropdownField::create('BegrotingsPageCopyToID', '', BegrotingsPage::get()->map())
            ->setEmptyString('Selecteer pagina voor kopie'));
    }
}

[1110 ] Я также поднял вопрос о том, чтобы следить за вводящей в заблуждение документацией: https://github.com/silverstripe/silverstripe-framework/issues/8773

6
задан Magnus 19 November 2008 в 15:08
поделиться

2 ответа

Проверьте исходный код Deskbar - они делают это; afaik, они вызывают библиотеку C, которая взаимодействует с X11, чтобы сделать задание

2
ответ дан 9 December 2019 в 22:41
поделиться

Существует python-keybinder, который представляет собой тот же код, но упакован отдельно. Также теперь доступен в репозиториях debian и ubuntu.

https://github.com/engla/keybinder

9
ответ дан 9 December 2019 в 22:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: