2015 ソフトウェア設計及び演習用の班Wiki

15::gr10::チャットウィンドウ(最終)

担当:平井諒

  • チャットウィンドウ
    • メッセージ表示部
      • 自分が入力した文字, ルームメンバーが入力した文字を表示
      • 名前 → メッセージと名前をセットで表示
    • メッセージ入力部
      • テキストボックス → ルームメンバーと会話したい内容を入力
      • 送信ボタン → 文字がサーバーに送信され, ルームメンバーのメッセージ表示部に表示
      • エンターキー → 文字がサーバーに送信され, ルームメンバーのメッセージ表示部に表示
      • スクロールバー → ウインドウ内で収まりきらない会話内容を、必要に応じて表示領域を移動し            て確認できる。

chat.h

#ifndef CHAT_H
#define CHAT_H

#include <gtk/gtk.h>

typedef struct chat_widgets_type{
  GtkWidget *window;
  GtkWidget *hbox;
  GtkWidget *vbox;
  GtkWidget *button;
  GtkWidget *scrolled_window1;
  GtkWidget *scrolled_window2;
  GtkWidget *entry;
  GtkWidget *canvas;
  GIOChannel *my_channel;
  //GIOChannel *your_channel;
  gchar name[32];
} chat_widgets;

#define HOST_NUM 10

struct message
{
  gboolean is_msg;
  gchar name[32];
  gchar hostname[16];
  gchar next_hostname[16];
  gchar text_msg[1024];
};


extern char messages[64][256];
extern int line;
extern gchar next_hostname[32];
extern const gchar* my_name;
extern int next_fd;
extern gboolean is_host;

int chat_main(void);

#endif

cb_events.h

#ifndef CB_EVETNS
#define CB_EVETNS

#include <gtk/gtk.h>

// enterを押した時に呼ばれる関数
void cb_entry (GtkEntry *entry, gpointer data);

// buttonを押した時に呼ばれる関数
void cb_button (GtkButton *button, gpointer data);

// 画面を再描画する必要があるときに呼ばれる関数
gboolean
cb_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer data);

#endif

output.h

#ifndef OUTPUT_H
#define OUTPUT_H

#include <gtk/gtk.h>
#include "chat.h"

// cb関数からテキストと構造体widgetsを受け取ってcanvasへ表示
void cairo_output (gpointer data, struct message msg);

#endif


最終更新日:2015/08/10 10:38:25