Lazarus frontend can now run external programs capturing their textual
output. Hopefully, within a few days, the frontend will be Alpha. :)

On 17/08/2015, Edward Bartolo <edb...@gmail.com> wrote:
> The Lazarus backend interface unit is as follows but still unfinished:
>
> ----------------------------------------
> unit backend;
>
> {$mode objfpc}{$H+}
>
> interface
>
> uses
>   Classes, SysUtils, stdctrls;
>
> procedure Backend_Save(essid, pw: string);
> procedure Backend_Save_Connect(essid, pw: string);
> function Backend_Query_Connect(connection: string; var pw: string):
> boolean;
> function Backend_Delete_Connect(essid: string): boolean;
> function Backend_Connection_Connect(essid: string): boolean;
> function Backend_Disconnect_Active_Connection: boolean;
> procedure Backend_Scan(aListBox: TListBox);
> procedure Backend_Load_Existing(aListBox: TListBox);
>
> implementation
>
> const
>   opSave = 0;
>   opSaveConnect = 1;
>   opQueryConnect = 2;
>   opDeleteConnect = 3;
>   opConnectionConnect = 4;
>   opDisconnectActiveConnection = 5;
>   opScan = 6;
>   opLoadExisting = 7;
>
>
> procedure Backend_Save(essid, pw: string);
> begin
>   // backend opSave essid pw
> end;
>
> procedure Backend_Save_Connect(essid, pw: string);
> begin
>   // backend opSaveConnect essid pw
> end;
>
> function Backend_Query_Connect(connection: string; var pw:string): boolean;
> begin
>   // backend opQueryConnect essid pw
> end;
>
> function Backend_Delete_Connect(essid: string): boolean;
> begin
>   // backend opDeleteConnect essid
>   result := true;
> end;
>
> function Backend_Connection_Connect(essid: string): boolean;
> begin
>   // backend opConnectionConnect essid
> end;
>
> function Backend_Disconnect_Active_Connection: boolean;
> begin
>   // backend opDisconnectActiveConnection
> end;
>
> procedure Backend_Scan(aListBox: TListBox);
> begin
>   // backend opScan stringlist
> end;
>
> procedure Backend_Load_Existing(aListBox: TListBox);
> begin
>   // backend opLoadExisting stringlist
> end;
>
> end.
> ---------------------------------------------
>
> On 17/08/2015, Edward Bartolo <edb...@gmail.com> wrote:
>> The Progress of My Coding Till Now:
>>
>> I am attaching two images of the GUI's main window and the only
>> dialog. The GUI is programmed in Lazarus Pascal.
>>
>> The backend is in C. The code till now, although it doesn't do anything
>> useful.
>> ----------------------------------------------
>> #include <stdio.h>
>> #include <stdlib.h>
>> #include <string.h>
>> #include <unistd.h>
>>
>>
>> using namespace std;
>>
>>
>> #define opSave                               0
>> #define opSaveConnect                        1
>> #define opQueryConnect                       2
>> #define opDeleteConnect                      3
>> #define opConnectionConnect          4
>> #define opDisconnectActiveConnection 5
>> #define opScan                               6
>> #define opLoadExisting                       7
>>      
>> /*
>> 1) Glib::spawn_sync instead of a pipe stream, provides a slot.
>> 2) cmd trying to call an inexistent command still returns a valid
>> pointer!
>>    verify cmd exists before calling exec
>> */
>>
>> inline bool file_exists(char* name) {
>>   return (access(name, F_OK) != -1);
>> }
>>
>>
>> int exec(const char* cmd, char* out)
>> {
>>      const int buf_size = 128;
>>              
>>      FILE * pipe = popen(cmd, "r");
>>      char buffer[buf_size];
>>      while(!feof(pipe)) {
>>              if(fgets(buffer, buf_size, pipe) != NULL)
>>              {
>>                      if (out != NULL)
>>                              strcat(out, buffer);
>>                              else strcpy(out, buffer);
>>              }
>>      }
>>              
>>      return pclose(pipe);
>> }
>>
>> int main(int argc, char *argv[])
>> {
>>      char *out = 0;
>>      int switch_item = -1;
>>      if (argc > 1) switch_item = atoi(argv[1]);
>>      
>>      switch (switch_item) {
>>              case opSave:
>>                      //saveFile(argv[2], argv[3]);
>>                      exec("cat /etc/network/interfaces", out);
>>                      //out[0] = ' ';
>>                      printf(out);
>>              
>>                      return 0;
>>                      
>>              case opSaveConnect:
>>                      //saveFile(argv[2], argv[3]);
>>                      //Connect(argv[2]);
>>                      return 0;
>>                      
>>              case opQueryConnect:
>>                      
>>                      return 0;
>>                      
>>              case opDeleteConnect:
>>              
>>                      break;
>>                      
>>              case opConnectionConnect:
>>                      
>>                      break;
>>                      
>>              case opDisconnectActiveConnection:
>>              
>>                      break;
>>                      
>>              case opScan:
>>                      
>>                      break;
>>                      
>>              case opLoadExisting:
>>              
>>                      return 0;
>>      }
>>      
>>      return -1; // parameter not in range
>> }
>> ----------------------------------------------------------------
>>
>>
>> On 17/08/2015, Rainer Weikusat <rainerweiku...@virginmedia.com> wrote:
>>> James Powell <james4...@hotmail.com> writes:
>>>> While there are packages that can be invisible and unintrusive into
>>>> the system, there are some that cannot.
>>>>
>>>> The problem is responsibility.
>>>>
>>>> Who wants to remain responsible for boot scripts? Upstream or vendor?
>>>>
>>>> Who wants responsibility for providing interoperability between
>>>> projects? Upstream or downstream bazaar?
>>>>
>>>> Who wants responsibility for the userland? Upstream or the downstream
>>>> bazaar?
>>>
>>> It's possible to frame this in more technical terms: Who'll end up doing
>>> system integration, system integrators or application developers? The
>>> answer should (hopefully) be obvious.
>>> _______________________________________________
>>> Dng mailing list
>>> Dng@lists.dyne.org
>>> https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng
>>>
>>
>
_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to