Re: Unified libraries to allow porting code to other oses

new topic     » goto parent     » topic index » view thread      » older message » newer message

I think I understand. Something like set(object id, sequence property, object value). I don't understand how your "pretty simple" line works.

With my classes library, I would have to define a lot of classes, one per widget, defines all its methods and properties and create functions that instantiate that object like I did in my Database Visual Control Library. That is to say one source file per widget.

Here is an example of the way I create my own objects:

include constants.e 
include myLibs\myDebug.e 
include myLibs\myFile.e 
include myLibs\classes.e 
 
global constant 
  dbmemo_MLE = 1, dbmemo_RICHEDIT = 2 
 
------------------------------------------------------------------------------ 
 
procedure onChange(integer self, integer event, sequence params) 
  integer dbmemo, table 
 
  dbmemo = findComponentEntity(self) 
  if dbmemo > 0 then 
    table = getEntityProperty(dbmemo, dbmemo_TABLE) 
    void = callEntityMethod(dbmemo, table, tableUpdate, getText(self)) 
  end if 
end procedure 
 
------------------------------------------------------------------------------ 
 
-- params = {id,text,type,table} 
global function dbmemoCreate(integer parent, integer x, integer y, integer w, 
                             integer h, integer memoType, 
                             integer table, sequence field) 
  integer dbmemo, id 
 
  dbmemo = createEntity(TDBMemo) 
 
  if memoType = dbmemo_MLE then 
    id = createEx( MleText, "", parent, x, y, w, h, w32or_all({ES_AUTOVSCROLL,WS_VSCROLL}), 0 ) 
  elsif memoType = dbmemo_RICHEDIT then 
    id = createEx( RichEdit, "", parent, x, y, w, h, w32or_all({ES_NOHIDESEL,ES_AUTOHSCROLL,WS_HSCROLL}), 0 ) 
  end if 
  setEntityProperty(dbmemo, dbmemo_ID, id) 
  setEntityProperty(dbmemo, dbmemo_TYPE, memoType) 
  setEntityProperty(dbmemo, dbmemo_TEXT, "") 
  setEntityProperty(dbmemo, dbmemo_TABLE, table) 
  setEntityProperty(dbmemo, dbmemo_FIELD, field) 
 
  void = callEntityMethod(dbmemo, table, tableSetLink, {}) 
  setHandler(id, w32HChange, routine_id("onChange")) 
  return dbmemo 
end function 
 
------------------------------------------------------------------------------ 
 
-- empty control text 
-- params = {} 
function dbmemoClean(integer sender, integer dbmemo, object params) 
  integer id 
 
  id = getEntityProperty(dbmemo, dbmemo_ID) 
  setText(id, "") 
  return 0 
end function 
 
------------------------------------------------------------------------------ 
 
-- update control text according to its type 
-- yet, I don't see any need to differentiate MLE and RichEdit 
-- params = {content} 
function Update(integer sender, integer dbmemo, object params) 
  integer id 
 
  id = getEntityProperty(dbmemo, dbmemo_ID) 
  void = enableHandler(id, w32HChange, routine_id("onChange"), 0) 
  setText(id, params) 
  setEntityProperty(dbmemo, dbmemo_TEXT, params) 
  void = enableHandler(id, w32HChange, routine_id("onChange"), 1) 
  return 0 
end function 
 
------------------------------------------------------------------------------ 
 
-- show control 
-- params = {} 
function Show(integer sender, integer dbmemo, object params) 
  integer id 
 
  id = getEntityProperty(dbmemo, dbmemo_ID) 
  setVisible(id, w32True) 
  return 0 
end function 
 
------------------------------------------------------------------------------ 
 
-- hide control 
-- params = {} 
function Hide(integer sender, integer dbmemo, object params) 
  integer id 
 
  id = getEntityProperty(dbmemo, dbmemo_ID) 
  setVisible(id, w32False) 
  return 0 
end function 
 
------------------------------------------------------------------------------ 
 
  TDBMemo = defineClass("TDBMemo") 
 
  dbmemo_ID    = defineClassProperty(TDBMemo, "id", 0) 
  dbmemo_TEXT  = defineClassProperty(TDBMemo, "text", "") 
  dbmemo_TYPE  = defineClassProperty(TDBMemo, "type", "") 
  dbmemo_TABLE = defineClassProperty(TDBMemo, "table", 0) 
  dbmemo_FIELD = defineClassProperty(TDBMemo, "field", "") 
 
  dbmemoUpdate = defineClassMethod(TDBMemo, "Update", routine_id("Update")) 
  dbmemoShow   = defineClassMethod(TDBMemo, "Show",   routine_id("Show")) 
  dbmemoHide   = defineClassMethod(TDBMemo, "Hide",   routine_id("Hide")) 

And the way it is called:

  textField = dbtextCreate( 
      Win,  -- parent 
      100,  -- x position 
       62,  -- y position 
      148,  -- width 
       20,  -- height 
      ALIGN_LEFT, -- align 
      table,   -- table 
      "field2" -- field 
    ) 

The way to call a method is as follows:

  void = callEntityMethod(0, table, tableGoFirst, {}) 

Regards

Jean-Marc

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu