Giter Site home page Giter Site logo

livecode-ide's Introduction

LiveCode Community Edition

LiveCode Community Logo

Copyright © 2003-2019 LiveCode Ltd., Edinburgh, UK

Introduction

The LiveCode Community open source platform provides a way to build applications for mobile, desktop and server platforms.

The visual workflow allows the user to develop apps "live", using a powerful and uniquely-accessible language syntax.

LiveCode Ltd., based in Edinburgh, UK, coordinates development of LiveCode and has run the open source project since LiveCode Community was first released in April 2013.

You can download pre-compiled versions of the LiveCode Community development environment from the LiveCode download centre.

Overview

Subproject directories

This repository contains a number of subprojects, each of which has its own subdirectory. They can be divided into three main categories.

  1. Main system:
  • engine/ — The main LiveCode engine. This directory produces the IDE, "standalone", "installer" and "server" engines
  1. Non-third-party libraries:
  • libcore/ — A static library that provides various basic functions and types, and is used by many of the other subprojects

  • libexternal/ and libexternalv1 — Static libraries that support the LiveCode "external" interface, which allows the engine to load plugins

  1. Externals (libraries that can be dynamically loaded into the engine at runtime):
  • revdb/ — Database access external, and drivers for various backend database systems

  • revmobile/ — The iOS support external (which can only be built on Mac) and the Android support external (available on all desktop platforms)

  • revpdfprinter/ — Print-to-PDF functionality

  • revspeech/ — Text-to-speech support

  • revvideograbber/ — Video capture (Windows only)

  • revxml/ — XML parsing and generation

  • revzip/ - Zip archive management

Engine flavours

The engine — which loads, saves, manages and runs LiveCode stack files — can be built in several different specialized modes, which are adapted for various specific purposes. They are exposed as separate targets in the build system.

  1. IDE engine (development target)— Used to run the IDE. It contains extra support for things like syntax handling and building LiveCode "standalone" programs.

  2. Installer engine (installer target) — Used to create the LiveCode installer. It contains extra support for things like handling zip archives and comparing binary files.

  3. Server engine (server target) — This is the engine used in a server context, when no graphical user interface is needed. It contains server-specific functions such as CGI support. It also has a much fewer system library dependencies (and requires only non-desktop APIs where possible).

  4. Standalone engine (standalone target) — The engine that is embedded in "standalone apps" created with LiveCode.

Compiling LiveCode

LiveCode uses the gyp (Generate Your Projects) tool to generate platform-specific project files. It can generate xcodeproj files for Xcode on Mac, vcproj files for Microsoft Visual Studio, and makefiles for compiling on Linux.

Quick start

Note: You can only compile LiveCode from a clone of the LiveCode git repository on GitHub. See also the GitHub documentation on cloning a repository.

On Linux or Mac, you can quickly build LiveCode by installing basic development tools, and then running make all.

Detailed instructions

Please see the following table, which shows which target platforms are supported by which host platforms. The documentation for compiling for each target platform is linked.

Target platform Host platforms
mac, ios mac
win win, linux (Wine)
linux linux
android mac, linux
emscripten (html5) linux

Getting help

There are several ways to get help with installing and using LiveCode:

Contributing to LiveCode

For information on modifying LiveCode and submitting contributions to the LiveCode Community project, please see the CONTRIBUTING file.

License

LiveCode Community is freely distributable under the GNU Public License (GPL), with some special exceptions. For more information, please see the LICENSE file in this repository.

The LiveCode Community engine, libraries, and associated files are, unless otherwise noted:

Copyright © 2003-2019 LiveCode Ltd.

livecode-ide's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

livecode-ide's Issues

Image picker for Navigation Bar is too big.

The images and image picker are huge, especially on smaller screens. If the images were similar in side to the images in the PI I think it would work better. I also find it quite hard to find the one I want, perhaps showing the name of each image, as they seem to be in alphabetical order, might help? Also maybe a filter so if you know what you are looking for you can find it?

imagepicker

Project browser doesn't update when script-only stack is created

Steps to reproduce:

  1. Start the IDE
  2. Open the project browser
  3. In the message box, run create script only stack
  4. Note that the stack is not listed in the project browser
  5. Close the project browser
  6. Re-open the project browser
  7. Note that the stack is now listed (as "stack id 1001", probably)

I would expect the project browser to update immediately after creating the stack.

"Invalid default folder" error on startup on Windows

When running the IDE from the build tree on Windows, I receive the following error in the message box on startup:

ERROR: Invalid default folder: C:/Users/Peter/git/livecode/ide/Toolset/propertyInspectorControllers
line: 3473
handler: revIDEPushDefaultFolder
script object: stack "C:/Users/Peter/git/livecode/ide/Toolset/libraries/revidelibrary.8.livecodescript"

screen shot 2015-10-28 at 10 47 42

Unfocused project browser has no tooltips for footer buttons

When the project browser doesn't have focus, the buttons in the footer don't have tooltips.

Steps to reproduce:

  1. Open the project browser
  2. Focus the project browser
  3. Mouse over the footer buttons and note that tooltips appear
  4. Create a new stack
  5. Focus the new stack
  6. Mouse over the project browser's footer buttons and note that tooltips are absent.

Can't reorder widgets by dragging in project browser

I can't change the layer ordering of widgets on a card by dragging in the project browser.

Steps to reproduce:

  1. Create a new card
  2. Drag a "segmented widget" onto the card
  3. Drag an "SVG icon" widget onto the card, overlapping with the segmented widget
  4. Open the Project Browser
  5. The card should contain a "Segmented" and a "SVG Icon". Try to drag the "Segmented" up to before the "SVG Icon"
  6. Nothing happens

I would expect the "Segmented" to be moved to before the "SVG Icon" in the project browser's list, and for the "SVG Icon" to be moved behind the "segmented widget" on the card.

Can't open the message box on Windows 10

Steps to reproduce:

  • Install LiveCode 8.0.0-dp-10 on Windows 10
  • Run the IDE
  • Click the "Message Box" button in the menu bar

Expected results: the message box appears

Actual results: nothing happens

No way to dismiss a menu in the Property Inspector

If you open a menu in the Property Inspector you have to choose something, there is no way to get it to close once it is open. It also stops you from doing anything else in the IDE.

  1. Drag on a Navigation Bar
  2. Open the PI
  3. Click on the Widget Theme so the menu show but don't choose something
  4. Click on your stack again, the menu remains open and focused so you can't do anything until you select an item.

In narrow project browser, footer tools are missing with no hint

When the project browser is too narrow for all the footer tools to be shown, there is no hint that some tools are missing from the footer.

This screenshot illustrates the issue; there are 5 tools that can't be seen (pushed off the right-hand side) but there's no way to tell!

screen shot 2015-10-23 at 10 18 36

See also: #580

"Install Shell Commands" feature

In LiveCode 8, there are two command-line tools that are useful to have in the system $PATH: lc-run and (especially) lc-compile. It would be really nice to have a "File→Install Shell Commands" (or "LiveCode→Install Shell Commands") menu item that would set this up.

Having the tools in the system path would make it much easier to do things like add editor support for automatic syntax checking without requiring users to do tedious manual configuration and/or adding fragile manual support for finding LiveCode to every editor.

I'd suggest the following logic on Mac OS X and Linux:

  1. If /usr/local/bin/tool exists and isn't a symlink, error
  2. Make /usr/local/bin/tool a symlink to the appropriate binary for the version of the IDE that's currently in use
  3. Fin

Windows seems trickier and might well entail messing about with environment variables.

Also, I'm not sure what the best way to deal with "Just For Me" installations of LiveCode is. They could either not offer the "Install Shell Commands" menu item, or just install in the global path anyway.

Problems copying cards in Project Browser

LiveCode 8.0.0-dp-10 on Windows 10.

  • Create two stacks "StackA" and "StackB"
  • Make "StackB" a substack of "StackA"
  • Add some cards ("Card1", "Card2", "Card3" to "StackB")
  • Select "Card1" in the Project Browser
  • Right-click on it in the Project Browser and "Copy"
  • Select "StackA" in the Project Browser and "Paste Objects"

"Card1" is successfully copied into "StackA"

  • Select "Card2" in the Project Browser
  • Right-click on it in the Project Browser and "Copy"
  • Select "StackA" in the Project Browser and "Paste Objects"

"Card1" gets successfully copied into "StackA" again.

The Project Browser shows "StackA" as containing two cards with the same name and ID. It doesn't appear to be an updating bug because if you close and reopen the Project Browser then the problem persists.

Tab bars don't cope well with narrow windows

Particularly when in label mode (but it happens in icon mode too), the headers on the IDE palettes can end up with the tabs under the action buttons on the right hand-side.

We could make them wrap to a new line (like Windows Tab Controls do).

We could make little arrows appear left and right to scroll them (I think Safari did this for a while - or Chrome).

We could make a popup appear at the end with any which 'fall' off.

I'm not sure which is the best - there might be other options to.

screen shot 2015-10-23 at 14 02 34

Message box doesn't receive keyboard focus properly on open

This is a weird one, and might be a (platform-specific) engine bug rather than an IDE bug! This affects the IDE when running on Linux using the KWin (KDE) window manager.

When the message box is opened by clicking the "Message Box" button on the menu bar, it partially receives the focus. The message box text is selected, and typing overwrites/modifies the contents of the text. However, the window manager focus remains on the menu bar (you can tell because of the highlighting of the window decorations) and pressing to run the command doesn't work. To run the command, you have to change the window focus to the message box using the mouse.

Add a filter to the project browser

When working with large numbers of stacks in the project browser (or when gRevDevelopment is enabled), it can often be (very) hard to find a particular stack/substack/control.

Please add a filter field -- perhaps like the filter field at the bottom of the project tree view in Xcode -- that narrows down the items shown in the project browser to those that match the specified filter text and their parents.

Property Inspector: Not all objects in the list provided exist

I tried to inspect the properties of the "Style" control of card 1002 of stack "revPropertyInspector1" using LC8.0-dp10 on 64-bit linux Mint 17 and was greeted with the following message in the message box:

ERROR: Not all objects in the list provided exist
line: 4426
handler: __revIDEPropertiesInfoOfSection
script object: stack "/opt/livecode/livecodecommunity-8.0.0-dp-10.x86_64/Toolset/libraries/revidelibrary.8.livecodescript"

Project Browser expanding a group opens the stack with group selected

I'm not sure if this is a bug or by design. It makes it impossible to use the project browser to navigate to a grouped control and use the contextual menu on it without opening the stack. I found this in selectObjects:

## If a card or stack is selected we don't want to go to the card
## The user should be able to highlight or expand a card or stack without going to it
if word 1 of tObjectList is "stack" or word 1 of tObjectList is "card" then
    exit selectObjects
end if

I think the same is true of groups but I also think there is something odd to the design if some objects behave differently to others. Wouldn't it be better to only open the object if the user double-clicks or add a go button and to do the same thing for every object type? Perhaps on selection in the PB select the object if it is on a currently open card but otherwise require some other action to open the card.

"Stuck" highlight on menu bar elements

Sometimes menus in the menu bar can get their highlight (keyboard focus?) "stuck".

Steps to reproduce on Linux:

  1. Open the IDE
  2. "File" -> "New Stack" -> "Default Size"
  3. Return the focus to the menu bar's window
  4. The "File" menu is pre-highlighted.

See screenshot:

screen shot 2015-10-23 at 12 02 27

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.