jed-users mailing list

[2005 Date Index] [2005 Thread Index] [Other years]
[Thread Prev] [Thread Next]      [Date Prev] [Date Next]

FL-Jed demo version


Hi.

I have released a demo version of FL-Jed that runs on Windows. The
version for Linux will still not be available for some time since
I am going to have little spare time in the following months.

The Readme file is attached, the link for a screenshot
and downloads is

http://freeweb.siol.net/feedcat/projects/jed/fljed/index.html

I will appreciate any comments and bug reports.

I had a lot of fun,
Marko Mahnic
FL-Jed is JED that uses the FLTK library to interact with the user.

FL-Jed adds the following features to JED:
	* Native FLTK menus
	* Blinking cursor with programmable shapes
	* Font selection dialog (from FLTK test program)
	* Font variants for syntax highlighting elements (bold, italic)
	* Improved keysym table - most keys can be remapped into a different keysequence
	* Scrollbar
	* Toolbar
	* Statusbar
        * Sidestrip (with beginning-of-fold marks)
        * initialization files:
          - jedfltk.rc
          - keycstm.sl

0. Installation
===============

This is just a demo release, so there is no installer. Just copy the files
on your disk and run jed\bin\fljed.exe.

To use the default JED configuration, you should clear the JED_HOME and
JED_ROOT system variables.

To use the UTF-8 mode you should set the JED_UTF8 system variable to 1:

   SET JED_UTF8=1
   
You can run FL-JED with runfljed.bat that does the above before running
fljed.exe.

FL-Jed was tested on w2k, w98 and wXP.


Please report errors and opinions to
fljed at siol dot com,
or jed-users at jedsoft dot org.



1. jedfltk.rc
=============

At the end of jed.rc the file jedfltk.rc is searched for and evaluated. It
is intended for FL-Jed specific customizations.

If you have a personal jed.rc file (or .jedrc) you should add this code at the
end of it:

% -------------
#ifdef FLTK
static variable init_file = 
   dircat (Jed_Home_Directory,
# ifdef UNIX
           ".jedfltkrc"
# else
           "jedfltk.rc"
# endif
           );

if (1 != file_status (init_file))
   init_file = "jedfltk.rc";

if (init_file != NULL)
   () = evalfile (init_file);
#endif
% -------------

In the future, jedfltk.rc might be called directly from site.sl.

Currently jedfltk.rc demonstrates the implemented features.



2. keycstm.sl
=============

This file is evaluated at the end of keydefs.sl. Its purpose is to
customize Key_XXX variables, set keysyms and add new Key_XXX variables
before any of the Key_XXX variables is actually used. 

The file is searched for with the expand_jedlib_file() call, so the user
can make personal customizations.

Currently keycstm.sl demonstrates the use of set_keysym() to define keys
like Key_Ctrl_M (to distinguish it from Return) and Key_Ctrl_Shift_Up.



3. Menus
========

The menus are created with menu_XXX calls. The
menu_set_select_menubar_callback() could not be implemented, so the
file popups.sl is evaluated from jedfltk.rc.

The menu bar can be hidden with show_menubar(0), but it can still be
activated with Alt- combinations.

Keyboard shortcuts are not displayed in the menus because FLTK uses 
integer values for shortcuts and translates them into text just before
displaying the menu.



4. Toolbar
==========

Currently there is only one toolbar. Buttons can be added to it with
toolbar_append_item(label, image, action...). Currently buttons can not be
deleted .

"label" is the text that is displayed in the button. FLTK processes the
text and expands @XXX macros to display special symbols.

"image" is a BMP file (Windows Bitmap) that is searched for along library
paths. Other formats (PNG, XBM) will be supported later. You can pass ""
if the button has no image.

"action" is the same as with menu_append_item().

The toolbar can be hidden with show_toolbar(0).



5. Statusbar
============

Currently the status bar only displays the JED version. In the future it
will have custom 'windows' each displaying some info.

It can be hidden with show_statusbar(0).



6. Sidestrip
============

Currently the sidestrip displays beginnings of closed folds. It can be
hidden with show_sidestrip(0). It is redrawn after every flush_updates()
but at most every 1/20 of a second.

For foldmarks to be displayed, the function jed_screen_line() was added to
screen.c.

In the future the sidestrip might be used to display various information:
bookmarks, breakpoints, ...



7. Scrollbar
============

The scrollbar displays the current position within the buffer. It is
updated after every flush_updates() but at most every 1/20 of a second.
You can navigate in the buffer if you move the slider.

The scrollbar can be hidden with show_scrollbar(0).



8. Font selection
=================

You can select any font by pressing the "F" button in the toolbar. If the
selected font does not have a fixed with, the text in the terminal is
drawn one character by one, so the display is slower. In this case the
width of the display cell is the average width of a set of characters.

SLang interface for font selection is planned.



9. Font variants for color objects
==================================

Color objects can be displayed in bold or italic. This can be done with
set_font_variant("color_object", value).

"color_object" is the name of the object, eg. "keyword0".

"value" is 0 for plain font, 1 for bold and 2 for italic.



10. Cursor shapes and blinking
==============================

The blinking of the cursor can be turned on or off. To turn it off use
set_cursor_blink(0). Otherwise the parameter is the number of 10ths of
seconds to wait before changing the state of the blinking cursor.

You can define the shape of the cursor with set_cursor_shape(id,l,t,r,b).

"id" is the state of the cursor being defined:
  1 - normal cursor ON
  2 - normal cursor OFF
  3 - virtual cursor ON
  4 - virtual cursor OFF
  
The meaning of id may change in the future. The virtual cursor will be
used if Jed ever supports virtual space (the cursor can move beyond EOL).
Additionally cursor shape may change depending on the overwrite mode.

"l,t,r,b" define the displayed rectangle in percent of character cell size.



11. Issues in demo version 0.1
==============================

   1. FL-Jed uses SLang 2.0 and FLTK 2.0 and is based on Jed 99.17-95. Of
      the three only SLang 2.0 has been released. The other two are still
      being developed.
      
   2. The menus for FLTK work well only with the mouse. If you use the
      keyboard you usually have to press Return or Space to 'execute' the
      selected item. JED shortcuts are not displayed in the menus since only
      FLTK internal shortcuts can be displayed there.
      
   3. ALL menu popup callbacks are invoked each time you begin selecting
      from the menubar. Even for this to work, the FLTK had to be changed
      (the Menu::popup function has been made virtual). 
      
      In JED (with text menus) the callback is called just before the
      submenu is selected.
      
   4. The popups.sl file has to be called from jedfltk.rc using
      menu_load_popups("Global") because
      menu_set_select_menubar_callback() could not be implemented.
      
   5. menu_insert_item() appends item at the end of menu exactly like
      menu_append_item() - the "position" parameter has no effect.
      
   6. Screen refresh is not always working.
   
   7. Occasionally a keystroke is lost. I experienced the problem with my
      private jed.rc but not with the default jed.rc.
   
   8. To use the UTF-8 mode, a system variable JED_UTF must be set to 1.
      If it is not, JED will recieve (and display) characters translated
      into default system codepage.
   
   9. If bold or italic font is used for syntax objects the screen might
      become trashed with dots. This is because the bold character is
      bigger than the non-bold character and is drawn outside of the
      character cell. The dots are usually at the beginning of the line.
      
  10. The IBMPC_SYSTEM ifdef in .sl files must be revised. FLTK even though
      working under Windows, returns xterm like keycodes. "site.sl" has been
      changed to define the variable __old_dos_keyboard__ on IBMPC_SYSTEM where
      FLTK ifdef is not defined.
      Wherever you are dealing with the keyboard keycodes you should change
         #ifdef IBMPC_SYSTEM
      to
         #ifexists __old_dos_keyboard__
      unlsess you are using Key_XXX variables from keydefs.sl

  11. Keysequences beginning with Alt-<char> are causing problems. If the
      sequence is bound to a function, FL-Jed will store '\e<char>' into
      the keybuffer with the character <char> converted to lowercase (only
      characters 'A' .. 'Z'). If the keysequence is unbound it will pass
      the combination back to FLTK to find a menubar shortcut.
      
      If the sequence Alt-<char> is a prefix sequence (you used sth. like
      setkey("foo", "\eab") ), this will not work because
      jed_get_key_function() will not detect that it is the prefix of a
      longer keysequence. Alt-<char> will be passed to FLTK.
      
      You can invoke such sequences by pressing ESC <char> ...
      


[2005 date index] [2005 thread index]
[Thread Prev] [Thread Next]      [Date Prev] [Date Next]