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
src/dlangide/ui
|
@ -4,6 +4,7 @@ import dlangui.core.logger;
|
||||||
import dlangui.widgets.editors;
|
import dlangui.widgets.editors;
|
||||||
import dlangui.widgets.srcedit;
|
import dlangui.widgets.srcedit;
|
||||||
import dlangui.widgets.menu;
|
import dlangui.widgets.menu;
|
||||||
|
import dlangui.widgets.popup;
|
||||||
|
|
||||||
import ddc.lexer.textsource;
|
import ddc.lexer.textsource;
|
||||||
import ddc.lexer.exceptions;
|
import ddc.lexer.exceptions;
|
||||||
|
@ -86,11 +87,27 @@ class DSourceEdit : SourceEdit {
|
||||||
return super.handleAction(a);
|
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() {
|
TextPosition getCaretPosition() {
|
||||||
return _caretPos;
|
return _caretPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// change caret position and ensure it is visible
|
/// change caret position and ensure it is visible
|
||||||
void setCaretPos(int line, int column)
|
void setCaretPos(int line, int column)
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,6 +10,7 @@ import dlangui.widgets.appframe;
|
||||||
import dlangui.widgets.docks;
|
import dlangui.widgets.docks;
|
||||||
import dlangui.widgets.toolbars;
|
import dlangui.widgets.toolbars;
|
||||||
import dlangui.widgets.combobox;
|
import dlangui.widgets.combobox;
|
||||||
|
import dlangui.widgets.popup;
|
||||||
import dlangui.dialogs.dialog;
|
import dlangui.dialogs.dialog;
|
||||||
import dlangui.dialogs.filedlg;
|
import dlangui.dialogs.filedlg;
|
||||||
import dlangui.core.stdaction;
|
import dlangui.core.stdaction;
|
||||||
|
@ -520,6 +521,7 @@ class IDEFrame : AppFrame {
|
||||||
case IDEActions.GetCompletionSuggestions:
|
case IDEActions.GetCompletionSuggestions:
|
||||||
Log.d("Getting auto completion suggestions.");
|
Log.d("Getting auto completion suggestions.");
|
||||||
auto results = _editorTool.getCompletions(currentEditor, currentEditor.getCaretPosition);
|
auto results = _editorTool.getCompletions(currentEditor, currentEditor.getCaretPosition);
|
||||||
|
currentEditor.showCompletionPopup(results);
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return super.handleAction(a);
|
return super.handleAction(a);
|
||||||
|
|
Loading…
Reference in New Issue