Added popup to show completion suggestions. issue #20

This commit is contained in:
Hans-Albert Maritz 2015-02-12 10:18:51 +11:00
parent e09844343e
commit 56ac7b9fac
2 changed files with 20 additions and 1 deletions

View File

@ -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)
{

View File

@ -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);