Equivalente programático da ação do menu 'copiar figura'
-
21-12-2019 - |
Pergunta
Estou desenvolvendo um aplicativo GUI do Matlab que plota uma figura com elementos de interface do usuário adicionais na janela da GUI.Eu gostaria de adicionar uma ação de menu ao menu da janela GUI que duplique exatamente a entrada "Editar | Copiar Figura" do menu da janela de figura padrão, para que as opções de cópia de figura 'preservar informações', 'forçar fundo branco' e 'corresponder figura tamanho da tela' pode ser aplicado.
Alguém sabe como fazer isso?
Obrigado!
EDITAR Para adicionar o que funcionou
Em vez de tentar copiar/modificar/colar o código no manipulador de menu da janela de figura, acabei de chamá-lo a partir da função de menu da GUI
% --------------------------------------------------------------------
function CopyFigureMenuItem_Callback(hObject, eventdata, handles)
% hObject handle to CopyFigureMenuItem (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
editmenufcn(handles.figure1, 'EditCopyFigure');
Quase certamente não é à prova de futuro e não é garantido que funcione em qualquer versão futura, mas no R2014a ele faz o que eu quero!
Solução
Tipo
>>edit editmenufcn
no prompt de comando do Matlab para ver todas as invocações programáticas do menu Editar.Aparentemente o que você está procurando é:
editmenufcn(hFigure, 'EditCopyFigure');
Claro, hFigure
deve ser o identificador da figura que você deseja copiar.
Editar mais tarde
Espiar o código pode lhe dar dicas para implementar funcionalidades mais refinadas.O corpo da função é um enorme switch
declaração;procurando por 'EditCopyFigure'
string fornecerá o trecho de código no qual você está interessado.Tenha cuidado para não modificar esta função ou salvar as alterações.:-)
No entanto, esta função não está documentada e pode ser alterada/removida em versões posteriores.Espero que você não esteja incomodado com isso.
Editar ainda mais tarde
Aparentemente, o que foi dito acima não é a resposta para a pergunta.A resposta seria "Sim, há pelo menos alguém que sabe fazer isso." :-)