4 Copyright (C) 1999-2000 Timo Sirainen
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #include "module-formats.h"
29 #include "printtext.h"
30 #include "fe-common-core.h"
31 #include "fe-common-silc.h"
35 #include "gui-entry.h"
36 #include "mainwindows.h"
37 #include "gui-printtext.h"
38 #include "gui-readline.h"
39 #include "statusbar.h"
40 #include "gui-windows.h"
44 #ifdef HAVE_STATIC_PERL
45 void perl_core_init(void);
46 void perl_core_deinit(void);
48 void fe_perl_init(void);
49 void fe_perl_deinit(void);
53 void silc_deinit(void);
55 void gui_expandos_init(void);
56 void gui_expandos_deinit(void);
58 void textbuffer_commands_init(void);
59 void textbuffer_commands_deinit(void);
61 void lastlog_init(void);
62 void lastlog_deinit(void);
64 void mainwindow_activity_init(void);
65 void mainwindow_activity_deinit(void);
67 void mainwindows_save_init(void);
68 void mainwindows_save_deinit(void);
70 static GMainLoop *main_loop;
73 static const char *firsttimer_text =
74 "Looks like this is the first time you run irssi.\n"
75 "This is just a reminder that you really should go read\n"
76 "startup-HOWTO if you haven't already. Irssi's default\n"
77 "settings aren't probably what you've used to, and you\n"
78 "shouldn't judge the whole client as crap based on them.\n\n"
79 "You can find startup-HOWTO and more irssi beginner info at\n"
80 "http://irssi.org/beginner/";
81 static int display_firsttimer = FALSE;
84 static void sig_exit(void)
86 g_main_quit(main_loop);
89 /* redraw irssi's screen.. */
90 void irssi_redraw(void)
98 statusbar_redraw(NULL);
103 static void textui_init(void)
105 static struct poptOption options[] = {
107 { NULL, '\0', 0, NULL }
110 args_register(options);
112 irssi_gui = IRSSI_GUI_TEXT;
115 fe_common_core_init();
116 fe_common_silc_init();
118 theme_register(gui_text_formats);
119 signal_add("gui exit", (SIGNAL_FUNC) sig_exit);
122 static void textui_finish_init(void)
126 screen_refresh_freeze();
128 textbuffer_view_init();
129 textbuffer_commands_init();
132 gui_printtext_init();
136 mainwindow_activity_init();
137 mainwindows_save_init();
143 fe_common_core_finish_init();
145 #ifdef HAVE_STATIC_PERL
149 signal_emit("irssi init finished", 0);
151 if (display_firsttimer) {
152 printtext_window(active_win, MSGLEVEL_CLIENTNOTICE,
153 "%s", firsttimer_text);
156 screen_refresh_thaw();
159 static void textui_deinit(void)
162 signal(SIGINT, SIG_DFL);
164 screen_refresh_freeze();
165 while (modules != NULL)
166 module_unload(modules->data);
168 signal_remove("gui exit", (SIGNAL_FUNC) sig_exit);
172 gui_printtext_deinit();
173 gui_readline_deinit();
174 gui_windows_deinit();
175 mainwindows_save_deinit();
176 mainwindow_activity_deinit();
177 mainwindows_deinit();
178 gui_expandos_deinit();
180 textbuffer_commands_deinit();
181 textbuffer_view_deinit();
184 screen_refresh_thaw();
187 #ifdef HAVE_STATIC_PERL
194 fe_common_silc_deinit();
195 fe_common_core_deinit();
200 static void check_oldcrap(void)
203 char *path, str[256];
206 /* check that default.theme is up-to-date */
207 path = g_strdup_printf("%s/.irssi/default.theme", g_get_home_dir());
208 f = fopen(path, "r+");
214 while (!found && fgets(str, sizeof(str), f) != NULL)
215 found = strstr(str, "abstracts = ") != NULL;
223 printf("\nYou seem to have old default.theme in ~/.irssi/ directory.\n");
224 printf("Themeing system has changed a bit since last irssi release,\n");
225 printf("you should either delete your old default.theme or manually\n");
226 printf("merge it with the new default.theme.\n\n");
227 printf("Do you want to delete the old theme now? (Y/n)\n");
230 fgets(str, sizeof(str), stdin);
231 if (toupper(str[0]) == 'Y' || str[0] == '\n' || str[0] == '\0')
236 static void check_files(void)
241 path = g_strdup_printf("%s/.irssi", g_get_home_dir());
242 if (stat(path, &statbuf) != 0) {
243 /* ~/.irssi doesn't exist, first time running irssi */
244 display_firsttimer = TRUE;
252 static void winsock_init(void)
254 WORD wVersionRequested;
257 wVersionRequested = MAKEWORD(2, 2);
259 if (WSAStartup(wVersionRequested, &wsaData) != 0) {
260 printf("Error initializing winsock\n");
266 int main(int argc, char **argv)
276 /* initialize the i18n stuff */
277 bindtextdomain(PACKAGE, LOCALEDIR);
282 args_execute(argc, argv);
285 g_error("Can't initialize screen handling, quitting.\n");
287 textui_finish_init();
288 main_loop = g_main_new(TRUE);
289 g_main_run(main_loop);
290 g_main_destroy(main_loop);