Git Product home page Git Product logo

fbide's People

Contributors

albeva avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fbide's Issues

UI for the workspace tree

Implement side panel that lists the open workspaces and projects in a tree structure.

  • Workspaces and projects can be anonymous default ones meaning their node itself will not be visible, but will still show the children (files). This is to support single file editing and compilation same as current IDE.
  • support for virtual folders
  • drag & drop support
  • context menus on nodes

Implement configuration dialog

This is related to the base configuration #3 and deals with implementing the user interface for it

  • be modular. In future we will support plugins so plugins should be able to add their own configurable options / panels easily
  • provide API to manipulate / add custom things

Types of configuration:

  • FBIde related base options (e.g. language)
  • style designer for the editor. Should support "default" and language specifics. Similar to intellij
  • compiler / freebasic related

UI for project settings

UI for the project settings. Modify everything. Any changes are done via project system API.

  • trigger from context menus in the tree
  • add global "projects" menu

Dialog should:

  • API to add new panels / options (by plugins)
  • Events for every action. These are UI events. Project system will have its own events when changes are made to the underlying data structure.
  • compiler flags
  • included files
  • directories
  • libraries
  • output options

Simple FreeBASIC editor

1st version should use very simple scintilla provided editor for freebasic. Maybe apply simple customisations if any required based on previous existing work. Later version will be driven by custom lexer, parser and semantic analyser. Quite possibly the enhanced editor will only be supported for "modern" dialect of freebasic and ignore qbasic and fb-lite compatible modes.

Hangs when F1 help is executed

How to reproduce:

  1. Make sure the help .chm is set on config
  2. in any file go to a keyword that have multiple chm entries like 'for'
  3. press F1

the dialog showing both will appear, but it will unresponsive
that because the call that launch the help, is done synchronous
so it does not allow messages to be processed.

Implement UiManager

Lift implementation from previous version. Do some clean up.

  • manage wxFrame
  • manage panel based layout using wxAUI
  • manage toolbars
  • manage app title
  • manage statusbar
  • support loading and saving layouts.

Handle application configuration

Implement a consistent way to manage application configuration.

  • load/store configuration (investigate formats. yaml? ini? xml?)
  • allow config options to be overridden by command line options
  • provide API to enumerate and query the configuration
  • emit events whenever configuration changes

Implement Project system

This is a big one. Design and implement a project system for the IDE.

Project system will be composed of several parts, but mostly be hierarchical data structure. This should go hand-in-hand with compiler subsystem and hopefully be detachable from the IDE so that it would be possible to implement a build tool independent of the IDE (this is low prio, but a consideration)

Workspaces

IDE can have one or more independent workspaces open. For now workspace is simply container for projects. In future they will support project dependence and global build options, etc.

Projects

Project contains source files, type (library, executable, ...), build options, libraries to link against, etc.

Features

  • Support build configurations: debug / release / ...
  • support build options project wide and configuration specific (compiler flags, linked libraries, defines)
  • environment variable resolution
  • api to enumerate and query the project
  • emit events at every action and change
  • smaller scope can override larger scope: Environment variables > fbide global settings > workspace settings > project settings > project release settings > file settings > file release mode settings.

UI for compilation and running the app

Implement the UI parts that execute the compilation and allow executing the app.

  • toolbar buttons (compile, run, compiler & run)
  • show build log (similar to visual studio. Simple console like view)
  • summarise errors / warnings if any. Allow jumping directly to errors (detect files and line numbers)

Implement Editor base class

Base class of the editor should load configuration on top of wxStyledTextCtrl.

  • styling
  • editor options (show whitespaces, line numbers, etc...)

Make app translatable

  • config option to select language
  • restart IDE for change
  • support simple ini or yaml files for translations. Look into wxWidgets provided options as well.

Compiler infrastructure

This goes hand-in-hand with project system #6. This subsystem should take in the workspace and compile.

  • take input
  • compile
  • produce the result if and log errors
  • support setting compile options.

Implement Manager class

Lift implementation from previous version. Having a central manager provides a good gateway to IDE APIs and will make it easy should I later decide to implement native plugins.

Implement DocumentManager

Implement DocumentManager

Job of the document manager is to load wxControl into main tabbed area, highlight save/unsave status. It doesn't care what the document content is aside from managing its view.

Mostly implemented already in old version

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.