aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-08-19Improve handling of non-existing properties in `set`Adrian Kummerlaender
2015-08-19Prevent trailing whitespace from resetting configuration valuesAdrian Kummerlaender
Trailing whitespace was falsely recognized as a separate argument and as such led to resetting configuration values without obvious cause.
2015-08-19Add `set` command to ease configuration changesAdrian Kummerlaender
2015-08-19Extract all settings into `SettingsHandler` objectAdrian Kummerlaender
This enables the user to straight forwardly change all application settings via command mode. During the implementation of this change I discovered that the way I was passing around `StateHandler` and `SettingsHandler` instances using properties was unnecessary. If all object instances are created in a common hierarchy they can access each other by their `id` property - i.e. `settings` and `mode` are available to the whole application without property trickery.
2015-08-15Expose component settings as propertiesAdrian Kummerlaender
Otherwise they are not accessible to JS commands, i.e. they can not be changed in command mode.
2015-08-15Restructure QML and JS sourcesAdrian Kummerlaender
`list` holds the components of the central list UI element. `command` holds the UI and implementation parts of the command mode. `widget` holds more or less general purpose elements that may also be of use in other circumstances.
2015-08-14Display exceptions during `exec` processing as errorsAdrian Kummerlaender
2015-08-13Implement `kill` commandAdrian Kummerlaender
2015-08-13Implement `ls` commandAdrian Kummerlaender
This suggested adding an `iterate` helper method to `TerminalList` as well as line break logic to the command output log.
2015-08-12Change color setting types to `string`Adrian Kummerlaender
While `color` would obviously be the correct type to store a color value it is serialized as a `QVariant` value which is not easily changeable by the user. This requirement is satisfied by `string` and as such this type is - at this point in time - a superior replacement of `color`. Should the QML settings module be changed to serialize color values in a human readable fashion these types should be changed back to their formally correct value.
2015-08-12Add command output error font color to settingsAdrian Kummerlaender
2015-08-12Add special error formatting to command outputAdrian Kummerlaender
2015-08-11Add command output log to UIAdrian Kummerlaender
`output` text item reference is passed to all command implementations.
2015-08-10Implement proper handling of unimplemented commandsAdrian Kummerlaender
2015-08-09Return to normal mode after command evaluationAdrian Kummerlaender
Requires new `executed` signal in `CommandInput` component to correctly trigger the state change.
2015-08-09Implement `jump` commandAdrian Kummerlaender
Requires type dependent conversion in TerminaList's `selectItem` method as values passed through `eval` are of type `QJSValue` which is not implicitly convertible to Int.
2015-08-09Implement basic command dispatch logicAdrian Kummerlaender
Moved command implementation into separate ressource. Commands are plain JavaScript functions in this separate ressource and as such callable via a simple call to `eval`. Introduced the concept of a command prefix to enable implementation of e.g. a search command analogously to _vim_.
2015-08-07Extracted terminal list into separate componentAdrian Kummerlaender
2015-08-07Implemented basic command modeAdrian Kummerlaender
Exposes access to the application via JavaScript to the user. This will enable easy configuration changes as well as make more complex commands possible. All JavaScript entered in command mode is evaluated at the application root.
2015-08-06Rename insert mode change actionsAdrian Kummerlaender
This was done to reflect that they concern the whole insert mode and don't only control the terminal focus.
2015-08-05Add basic README.mdAdrian Kummerlaender
2015-08-05Make index font size dependent on configured prompt font sizeAdrian Kummerlaender
2015-08-04Display overlay even when resize operation is preventedAdrian Kummerlaender
This provides further visual feedback to the user that she has hit a limit. Reduced ease out animation duration to match duration of the highligher focus / defocus animations.
2015-08-04Increased overlay animation durationAdrian Kummerlaender
This further discourages flickering during continuous terminal resize operations. Overlay is now only enabled for resize operations after the terminal instantiation.
2015-08-04Added highlighter default and focus colors to settingsAdrian Kummerlaender
2015-08-04Added overlay background and font color to settingsAdrian Kummerlaender
This is required as the default white on black may not fit e.g. bright color schemes.
2015-08-04Fixed overlay display animation timeoutAdrian Kummerlaender
The animation is now restarted on every height and width change event. In practice this leads to the overlay being displayed continuously during multiline resize operations but only briefly on single line resize operations.
2015-08-04Implemented basic terminal size overlayAdrian Kummerlaender
Needs further fiddling concerning the animation curve and display duration
2015-07-27Enabled keybinding customization via settingsAdrian Kummerlaender
2015-07-26Extended available settings and changed them to value propertiesAdrian Kummerlaender
Otherwise each runtime change of a property leads to storing the new value to disk which we don't want - setting changes should be explicit and visible as such.
2015-07-26Added support for permanently storing settingsAdrian Kummerlaender
2015-07-25Extracted highlighter rectangles into separate componentAdrian Kummerlaender
2015-07-25Reimplemented `delete` command as more of a `reset` commandAdrian Kummerlaender
Pressing `d` in normal mode causes the current embedded terminal to be destroyed and the containing terminal item to be reset into its initial state. This allows for much more flexible usage of _MetaTerm_. To prevent unnecessary terminal item instantiations the `onExecuted` signal was extended to provide a `index` argument containing the sender terminal's index.
2015-07-24Implemented basic delete command in normal modeAdrian Kummerlaender
2015-07-21Introduced `frameWidth` property and defined minimum terminal linesAdrian Kummerlaender
2015-07-20Moved UI mode implementation into separate `StateHandler`Adrian Kummerlaender
`ApplicationWindow` doesn't offer QML State support but as this functionality lends itself quite well to the _Vim like_ UI mode paradigm it was moved into a `Item` based component.
2015-07-19Removed unnecessary `QMLTermWidget` background rectangleAdrian Kummerlaender
The background color is set accordingly to the color scheme by the widget itself.
2015-07-19Maximized terminal widthAdrian Kummerlaender
Terminal width is now automatically adjusted to use all available space. Commands to control horizontal terminal height were removed correspondingly.
2015-07-18Moved terminal resizing methods to `TerminalItem`Adrian Kummerlaender
2015-07-18Added terminal resizing commandsAdrian Kummerlaender
2015-07-06Added `terminal` property to TerminalItemAdrian Kummerlaender
Makes it easier to access the `QMLTermWidget` instance from both outside and inside `TerminalItem`
2015-07-05Replaced ScrollBar with terminal instance indexAdrian Kummerlaender
2015-07-05Embedded QML into C++ applicationAdrian Kummerlaender
2015-07-04Scroll to active item when list is expandedAdrian Kummerlaender
List expansion only happens when a new item is added and as such the `onHeightChanged` signal allows for bringing the new item into view. This work around is necessary as all my attempts to scroll with the output by e.g. using the `onExecuted` signal of `TerminalItem` failed. Reasons for this include both the async nature of JavaScript which makes it inconvenient to enforce execution of a function at exactly the right time, as well as the height value of `terminalList` seemingly not being updated instantly.
2015-07-03Introduced last and first terminal selector actionsAdrian Kummerlaender
They are active in normal mode and move the focus to the last respectively first element of the list.
2015-07-01Enter insert mode when list end is hit repeatedlyAdrian Kummerlaender
2015-07-01Control UI mode by enabling and disabling actionsAdrian Kummerlaender
2015-06-29Added vim-like UI normal and insert modesAdrian Kummerlaender
Normal mode allows for selecting the a terminal or newline text input. Insert mode sets the keyboard focus to the currently selected item. This transforms _MetaTerm_ into a fully keyboard driven application.
2015-06-21Initial commit of _MetaTerm_ UI prototypeAdrian Kummerlaender
MetaTerm is a meta terminal in the sense that it allows launching multiple terminal shells and applications in a unified interface that is in itself reminiscent of a terminal shell.