new display stuff, DOESNT WORK!!11
[my-code/ivac.git] / src / ivac.c
index 9167660..55188ec 100644 (file)
@@ -130,13 +130,8 @@ int main(int argc,char **argv) {
   audio_setup(&(ivac.audio));
 
   /* display */
-#ifdef XXX_GUI
-  /* "constant" graphics */
-  ivac_display_head(&ivac);
-  ivac_display_box(&ivac);
-  ivac_display_console(&ivac);
-#endif
   ivac_display(&ivac);
+  ivac_display_draw(&ivac);
 
   /* start event system - callbacks used: ivac_event_cb + ivac_regular_cb */
   event_start(&(ivac.event),(void *)&ivac,ivac_event_cb,ivac_regular_cb);
@@ -279,7 +274,8 @@ int ivac_event_cb(t_event *event,void *ptr) {
       event_math(ivac->net.connection[channel].fd,event,READ,ADD);
       ivac_send_info(channel,ivac);
     }
-    ivac_display(ivac);
+    ivac_display_content(ivac);
+    ivac_display_draw(ivac);
   }
 
   /* wait for user info */
@@ -293,7 +289,8 @@ int ivac_event_cb(t_event *event,void *ptr) {
           sprintf(c_str,"channel %02d: broken pipe - disconnected",channel);
           ivac_add_to_monitor(ivac,c_str);
         }
-        ivac_display(ivac);
+        ivac_display_content(ivac);
+        ivac_display_draw(ivac);
       }
     }
   } 
@@ -459,7 +456,8 @@ int ivac_parse_command(t_input *input,void *ptr) {
     ivac_add_to_monitor(ivac,c_str);
 
     /* refresh whole display content */
-    ivac_display(ivac);
+    ivac_display_content(ivac);
+    ivac_display_draw(ivac);
 
     /* delete content buffer + reset counter */
     memset(input->content,0,input->c_count-1);
@@ -472,25 +470,25 @@ int ivac_parse_command(t_input *input,void *ptr) {
 
 int ivac_display_head(t_ivac *ivac) {
 
-  display_line(&(ivac->display),0,ivac->display.max_x,0,0,'#');
-  display_string(&(ivac->display),(display->max_x-strlen(PROG_NAME))/2,2,
+  display_line(&(ivac->display),0,0,ivac->display.max_x,0,'#');
+  display_string(&(ivac->display),(ivac->display.max_x-strlen(PROG_NAME))/2,1,
                  PROG_NAME,strlen(PROG_NAME));
-  display_line(&(ivac->display),0,ivac->display.max_x,2,2,'#');
+  display_line(&(ivac->display),0,2,ivac->display.max_x,2,'#');
 
   return SUCCESS;
 }
 
-GO ON HERE !!! display stuff
-
 int ivac_display_box(t_ivac *ivac) {
 
-#ifndef XXX_GUI
-  puts("---------------------------------------------------------------------");
+  display_line(&(ivac->display),0,3,ivac->display.max_x,3,'-');
   printf("username: %s, capabilities: %02x|%04x\n",ivac->username,ivac->g_cap,
                                                    ivac->av_cap);
-  puts("---------------------------------------------------------------------");
-  puts("connections:");
-#endif
+  display_line(&(ivac->display),0,5,ivac->display.max_x,5,'-');
+  display_string(&(ivac->display),0,6,"connections:",12);
+  display_line(&(ivac->display),
+               0,ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN-1,
+               ivac->display.max_x,
+               ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN-1,'-');
  
   return SUCCESS;
 }
@@ -498,32 +496,34 @@ int ivac_display_box(t_ivac *ivac) {
 int ivac_display_box_content(t_ivac *ivac) {
 
   int channel;
+  char string[MAX_BOX_CHARS];
 
   /* prepare challenger names */
   for(channel=0;channel<MAX_CONNECTIONS;channel++)
     if(ivac->challenger[channel].name[0]==0)
       strcpy(ivac->challenger[channel].name,"<empty>");
 
-#ifndef XXX_GUI
   for(channel=0;channel<MAX_CONNECTIONS;channel++) {
-    if(ivac->net.connection[channel].status&C_INFO_A)
-      printf("channel %02d: %s:%d, status: %02x, name: %s\n",channel,
-             ivac->net.connection[channel].ip,
-             ivac->net.connection[channel].port,
-             ivac->net.connection[channel].status,
-             ivac->challenger[channel].name);
+    if(ivac->net.connection[channel].status&C_INFO_A) {
+      snprintf(string,MAX_BOX_CHARS,
+               "channel %02d: %s:%d, status: %02x, name: %s\n",channel,
+               ivac->net.connection[channel].ip,
+               ivac->net.connection[channel].port,
+               ivac->net.connection[channel].status,
+               ivac->challenger[channel].name);
+      display_string(&(ivac->display),0,IVAC_HEAD_LEN+4+channel,
+                     string,strlen(string));
+    }
   }
-#endif
 
   return SUCCESS;
 }
 
 int ivac_display_console(t_ivac *ivac) {
 
-#ifndef XXX_GUI
-  puts("---------------------------------------------------------------------");
-  puts("console messages:");
-#endif
+  display_string(&(ivac->display),
+                 0,ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN,
+                 "console messages:",17);
 
   return SUCCESS;
 }
@@ -531,31 +531,43 @@ int ivac_display_console(t_ivac *ivac) {
 int ivac_display_console_content(t_ivac *ivac) {
 
   int i;
+  char string[IVAC_CONSOLE_STRING_LEN];
 
-#ifndef XXX_GUI
-  for(i=0;i<IVAC_CONSOLE_LEN;i++)
-    printf("| %s\n",ivac->console[i]);
-#endif
+  for(i=0;i<IVAC_CONSOLE_LEN;i++) {
+    snprintf(string,IVAC_CONSOLE_STRING_LEN,"%s\n",ivac->console[i]);
+    display_string(&(ivac->display),
+                   0,ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN+1+i,
+                   string,strlen(string));
+  }
 
   return SUCCESS;
 }
 
 int ivac_display_prompt(t_ivac *ivac) {
 
-#ifndef XXX_GUI
-  puts("---------------------------------------------------------------------");
+  /* simply a printf - dirty! */
   printf("prompt: ");
-#endif
+  fflush(NULL);
 
   return SUCCESS;
 }
 
 int ivac_display_prompt_content(t_ivac *ivac) {
 
-#ifndef XXX_GUI
+  /* simply a printf - dirty! */
   printf("%c",ivac->input.content[ivac->input.c_count-1]);
   fflush(NULL);
-#endif
+
+  return SUCCESS;
+}
+
+int ivac_display_content(t_ivac *ivac) {
+
+  /* display box content */
+  ivac_display_box_content(ivac);
+
+  /* display console content */
+  ivac_display_console_content(ivac);
 
   return SUCCESS;
 }
@@ -564,26 +576,25 @@ int ivac_display(t_ivac *ivac) {
 
   int x,y;
 
-#ifndef XXX_GUI
-  /* display head */
+  /* display static head */
   ivac_display_head(ivac);
 
-  /* display box */
+  /* display static box */
   ivac_display_box(ivac);
-#endif
-  ivac_display_box_content(ivac);
 
-#ifndef XXX_GUI
-  /* display console */
+  /* display static console */
   ivac_display_console(ivac);
-#endif
-  ivac_display_console_content(ivac);
 
-#ifndef XXX_GUI
   /* display command prompt */
   ivac_display_prompt(ivac);
-#endif
-  fflush(NULL);
+
+  return SUCCESS;
+}
+
+int ivac_display_draw(t_ivac *ivac) {
+  
+  display_draw_until_line(&(ivac->display),ivac->display.max_y-1);
+  ivac_display_prompt(ivac);
 
   return SUCCESS;
 }