mirror of https://github.com/buggins/dlangide.git
Added popup to show completion suggestions. issue #20
This commit is contained in:
parent
e09844343e
commit
56ac7b9fac
|
@ -4,6 +4,7 @@ import dlangui.core.logger;
|
|||
import dlangui.widgets.editors;
|
||||
import dlangui.widgets.srcedit;
|
||||
import dlangui.widgets.menu;
|
||||
import dlangui.widgets.popup;
|
||||
|
||||
import ddc.lexer.textsource;
|
||||
import ddc.lexer.exceptions;
|
||||
|
@ -86,11 +87,27 @@ class DSourceEdit : SourceEdit {
|
|||
return super.handleAction(a);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void showCompletionPopup(dstring[] suggestions) {
|
||||
MenuItem completionPopupItem = new MenuItem(null);
|
||||
//Create popup menu
|
||||
foreach(int i, dstring suggestion ; suggestions) {
|
||||
auto action = new Action(i+1, suggestion);
|
||||
completionPopupItem.add(action);
|
||||
}
|
||||
completionPopupItem.updateActionState(this);
|
||||
PopupMenu popupMenu = new PopupMenu(completionPopupItem);
|
||||
popupMenu.onMenuItemActionListener = this;
|
||||
PopupWidget popup = window.showPopup(popupMenu, this, PopupAlign.Point | PopupAlign.Right, textPosToClient(_caretPos).left + left + _leftPaneWidth, textPosToClient(_caretPos).top + top + margins.top);
|
||||
popup.flags = PopupFlags.CloseOnClickOutside;
|
||||
Log.d("Showing popup at ", textPosToClient(_caretPos).left, " ", textPosToClient(_caretPos).top);
|
||||
}
|
||||
|
||||
TextPosition getCaretPosition() {
|
||||
return _caretPos;
|
||||
}
|
||||
|
||||
|
||||
/// change caret position and ensure it is visible
|
||||
void setCaretPos(int line, int column)
|
||||
{
|
||||
|
|
|
@ -10,6 +10,7 @@ import dlangui.widgets.appframe;
|
|||
import dlangui.widgets.docks;
|
||||
import dlangui.widgets.toolbars;
|
||||
import dlangui.widgets.combobox;
|
||||
import dlangui.widgets.popup;
|
||||
import dlangui.dialogs.dialog;
|
||||
import dlangui.dialogs.filedlg;
|
||||
import dlangui.core.stdaction;
|
||||
|
@ -520,6 +521,7 @@ class IDEFrame : AppFrame {
|
|||
case IDEActions.GetCompletionSuggestions:
|
||||
Log.d("Getting auto completion suggestions.");
|
||||
auto results = _editorTool.getCompletions(currentEditor, currentEditor.getCaretPosition);
|
||||
currentEditor.showCompletionPopup(results);
|
||||
return true;
|
||||
default:
|
||||
return super.handleAction(a);
|
||||
|
|
Loading…
Reference in New Issue