void App::event_init(HWND *window){ main_window = *window; //parametry IO::geti()->get_args(); //katalog roboczy set_workdir(); //ustawienia Config::geti()->load_from_file(); //jeœli aplikacja jest ju¿ uruchomiona if(IO::geti()->args.size()==2 && instancja2!=NULL){//jeden dodatkowy parametr - nazwa pliku do otwarcia IO::geti()->log("Wysy³anie pliku do otwartej instancji aplikacji..."); for(unsigned int i=0; i<IO::geti()->args.at(1).length(); i++){ SendMessage(instancja2, 0x0319, 69, (char)IO::geti()->args.at(1)[i]); } SendMessage(instancja2, 0x0319, 69, 0); IO::geti()->log("Zamykanie zbêdnej instancji aplikacji..."); //SendMessage(main_window, WM_DESTROY, 0, 0); DestroyWindow(main_window); return; } //log if(Config::geti()->log_enabled){ IO::geti()->clear_log(); } //kontrolki IO::geti()->log("Tworzenie kontrolek..."); Controls::geti()->create_static_center("Plik:", 0, 0, 0, 0, "filename"); Controls::geti()->create_edit("", 0, 0, 0, 0, "filename_edit"); Controls::geti()->create_edit_center(Config::i()->find_edit_placeholder, 0, 0, 0, 0, "find_edit"); Controls::geti()->create_edit_center(Config::i()->replace_edit_placeholder, 0, 0, 0, 0, "replace_edit"); Controls::geti()->create_edit_center("", 0, 0, 0, 0, "autoscroll_interval"); Controls::geti()->create_edit_center("", 0, 0, 0, 0, "autoscroll_wait"); Controls::geti()->create_button("Autoscroll: off", 0, 0, 0, 0, "autoscroll"); Controls::geti()->create_button("Analizuj", 0, 0, 0, 0, "analyze"); for(int i=0; i<Config::geti()->cmd_outputs_num; i++){ stringstream ss; ss<<"cmd_output"<<i+1; Controls::geti()->create_static_center("", 0, 0, 0, 0, ss.str()); } Controls::geti()->create_edit("", 0, 0, 0, 0, "cmd"); //edytor IO::geti()->log("Tworzenie edytora tekstu..."); if(LoadLibrary("RICHED32.DLL")==NULL){ IO::geti()->critical_error("B³¹d: brak biblioteki RICHED32.DLL"); return; } HWND editor_handle = CreateWindowEx(WS_EX_CLIENTEDGE, RICHEDIT_CLASS, "", WS_CHILD|WS_VISIBLE|WS_VSCROLL|ES_MULTILINE|ES_DISABLENOSCROLL, 0, 0, 0, 0, main_window, (HMENU)100, *hInst, 0); Controls::geti()->controls.push_back(new Control(editor_handle, "editor")); //tworzenie menu IO::geti()->log("Tworzenie menu..."); Menu* menu_plik = new Menu(); menu_plik->add_option("Nowy [Ctrl + N]", "new"); menu_plik->add_separator(); menu_plik->add_option("Otwórz", "load"); menu_plik->add_option("Prze³aduj", "reload"); menu_plik->add_option("Zapisz [Ctrl + S]", "save"); menu_plik->add_separator(); menu_plik->add_option("Baza akordów [Ctrl + B]", "base"); menu_plik->add_separator(); menu_plik->add_option("Zakoñcz", "exit"); Menu* menu_edycja = new Menu(); menu_edycja->add_option("Analizuj i napraw", "analyze"); menu_edycja->add_separator(); menu_edycja->add_option("Cofnij [Ctrl + Z]", "undo"); menu_edycja->add_option("Szukaj [Ctrl + F]", "find"); menu_edycja->add_option("Zamieñ", "replace"); menu_edycja->add_option("Szybka zamiana tekstu [Ctrl + T]", "quick_replace"); menu_edycja->add_separator(); menu_edycja->add_option("Utwórz akord z zaznaczenia [Ctrl + D]", "add_chord"); menu_edycja->add_option("Usuñ akordy [Ctrl + Q]", "remove_chords"); menu_edycja->add_option("Usuñ alternatywne wersje akordów", "remove_alt"); menu_edycja->add_separator(); menu_edycja->add_option("Zapisz schemat akordów [Ctrl + W]", "save_pattern"); menu_edycja->add_option("Wstaw schemat akordów [Ctrl + E]", "insert_pattern"); Menu* menu_widok = new Menu(); menu_widok->add_option("Zwiêksz czcionkê [Ctrl +]", "font++"); menu_widok->add_option("Zmniejsz czcionkê [Ctrl -]", "font--"); menu_widok->add_separator(); menu_widok->add_option("Formatuj tekst [Ctrl + R]", "format_text"); menu_widok->add_option("Przewiñ na pocz¹tek [F1]", "scroll_to_begin"); menu_widok->add_option("Przewiñ na koniec", "scroll_to_end"); menu_widok->add_separator(); menu_widok->add_option("Pe³ny ekran [F10, F11]", "fullscreen"); Menu* menu_autoscroll = new Menu(); menu_autoscroll->add_option("W³¹cz z opóŸnieniem [F7]", "autoscroll_wait"); menu_autoscroll->add_option("W³¹cz bez opóŸnienia [F8]", "autoscroll_nowait"); menu_autoscroll->add_option("Wy³¹cz", "autoscroll_off"); menu_autoscroll->add_separator(); menu_autoscroll->add_option("Zwolnij przewijanie [F5]", "autoscroll_slower"); menu_autoscroll->add_option("Przyspiesz przewijanie [F6]", "autoscroll_faster"); Menu* menu_transpozycja = new Menu(); menu_transpozycja->add_option("Transponuj 5 pó³tonów w górê", "transpose+5"); menu_transpozycja->add_option("Transponuj 1 pó³ton w górê [Ctrl + prawo]", "transpose++"); menu_transpozycja->add_separator(); menu_transpozycja->add_option("Transponuj 1 pó³ton w dó³ [Ctrl + lewo]", "transpose--"); menu_transpozycja->add_option("Transponuj 5 pó³tonów w dó³", "transpose-5"); menu_transpozycja->add_separator(); menu_transpozycja->add_option("Oryginalna tonacja [Ctrl + 0]", "transpose0"); menu_transpozycja->add_separator(); menu_transpozycja->add_option("Dodaj alternatywn¹ tonacjê", "alt"); Menu* menu_ustawienia = new Menu(); menu_ustawienia->add_option("Plik konfiguracyjny", "config"); menu_ustawienia->add_option("Wiersz poleceñ [Ctrl + `]", "cmd_toggle"); menu_ustawienia->add_option("Dziennik zdarzeñ", "log"); menu_ustawienia->add_option("Skojarz pliki .crd z programem", "associate_files"); Menu* menu_pomoc = new Menu(); menu_pomoc->add_option("Polecenia i skróty klawiszowe", "help"); menu_pomoc->add_option("O programie", "info"); //g³ówny pasek menu Menu* menu_bar = new Menu(); menu_bar->add_menu(menu_plik, "Plik"); menu_bar->add_menu(menu_edycja, "Edycja"); menu_bar->add_menu(menu_widok, "Widok"); menu_bar->add_option("Pasek narzêdzi", "toolbar_toggle"); menu_bar->add_menu(menu_autoscroll, "Autoscroll"); menu_bar->add_menu(menu_transpozycja, "Transpozycja"); menu_bar->add_menu(menu_ustawienia, "Ustawienia"); menu_bar->add_menu(menu_pomoc, "Pomoc"); SetMenu(main_window, menu_bar->handle); //autoscroll edits IO::geti()->log("Wype³nianie kontrolek, zmiana czcionek..."); Controls::geti()->set_text("autoscroll_interval", Config::geti()->autoscroll_interval); Controls::geti()->set_text("autoscroll_wait", Config::geti()->autoscroll_wait); //czcionki controls_fonts_set(); Controls::geti()->set_focus("editor"); //subclassing IO::geti()->log("Subclassing..."); for(unsigned int i=0; i<Controls::geti()->controls.size(); i++){ subclass(Controls::geti()->controls.at(i)); } //pasek schowany przy starcie if(!Config::geti()->toolbar_show){ toolbar_switch(0); } //baza akordów na start (jeœli nie by³ otwierany wybrany plik) if(Config::geti()->chordsbase_on_startup && IO::geti()->args.size()<=1){ chordsbase_start(); SetForegroundWindow(main_window); } //okno na po³owie ekranu if(Config::geti()->halfscreen==1){ IO::geti()->log("Rozmieszczanie okna na po³owie ekranu..."); RECT workArea; SystemParametersInfo(SPI_GETWORKAREA, 0, &workArea, 0); int offset_x = - GetSystemMetrics(SM_CXSIZEFRAME); int w = (workArea.right - workArea.left) / 2 - offset_x*2; int h = workArea.bottom - workArea.top + GetSystemMetrics(SM_CYSIZEFRAME); SetWindowPos(main_window, HWND_TOP, workArea.left + offset_x, workArea.top, w, h, 0); } event_resize(); //drag & drop IO::geti()->log("Uaktywanianie funkcji drag & drop..."); DragAcceptFiles(main_window, true); Controls::geti()->set_text("editor", ""); //wczytanie pliku zadanego parametrem if(IO::geti()->args.size()==2){ //jeden dodatkowy parametr - nazwa pliku do otwarcia open_chords_file(IO::geti()->args.at(1)); } update_title(); refresh_text(); IO::geti()->echo("Gotów do pracy - wersja "+version); }
int main(int argc,char **argv) { char *action; const char *err; unsigned int i; int act = AC_NONE; /* desired action */ unsigned int actlen = 0;/* str_len of above */ (void) umask(022); sig_pipeignore(); when = now(); getconfopt(argc,argv,options,1,&dir); initsub(0); sender = get_sender(); if (!sender) die_sender(); action = env_get("DEFAULT"); if (!action) strerr_die2x(100,FATAL,MSG(ERR_NODEFAULT)); if (!*sender) strerr_die2x(100,FATAL,MSG(ERR_BOUNCE)); if (!sender[str_chr(sender,'@')]) strerr_die2x(100,FATAL,MSG(ERR_ANONYMOUS)); if (str_equal(sender,"#@[]")) strerr_die2x(100,FATAL,MSG(ERR_BOUNCE)); action = set_workdir(action); stralloc_copys(&target,sender); if (action[0]) { i = str_chr(action,'-'); if (action[i]) { action[i] = 0; stralloc_copys(&target,action + i + 1); i = byte_rchr(target.s,target.len,'='); if (i < target.len) target.s[i] = '@'; } } stralloc_0(&target); set_cptarget(target.s); /* for copy() */ make_verptarget(); act = get_act_ismod(action,&actlen); stralloc_copy(&from,&outlocal); stralloc_cats(&from,"-return-@"); stralloc_cat(&from,&outhost); stralloc_0(&from); if (qmail_open(&qq) == -1) strerr_die2sys(111,FATAL,MSG(ERR_QMAIL_QUEUE)); msg_headers(act); if (act == AC_SUBSCRIBE) do_subscribe(action); else if (act == AC_SC) do_sc(action); else if (str_start(action,ACTION_RC)) do_rc_tc(action,ACTION_RC); else if(str_start(action,ACTION_TC)) do_rc_tc(action,ACTION_TC); else if (act == AC_UNSUBSCRIBE) do_unsubscribe(action); else if (str_start(action,ACTION_UC)) do_uc(action); else if (str_start(action,ACTION_VC)) do_vc_wc(action,ACTION_VC); else if (str_start(action,ACTION_WC)) do_vc_wc(action,ACTION_WC); else if (act == AC_LIST || act == AC_LISTN) do_list(act); else if (act == AC_LOG) do_log(action,actlen); else if (act == AC_EDIT) do_edit(action); else if (str_start(action,ACTION_ED)) do_ed(action); else if (act == AC_GET) do_get(action); else if (case_starts(action,ACTION_QUERY) || case_starts(action,ALT_QUERY)) do_query(); else if (case_starts(action,ACTION_INFO) || case_starts(action,ALT_INFO)) do_info(); else if (case_starts(action,ACTION_FAQ) || case_starts(action,ALT_FAQ)) do_faq(); else if (ismod && (act == AC_HELP)) do_mod_help(); else do_help(); err = qmail_close(&qq); closesub(); if (*err != '\0') strerr_die4x(111,FATAL,MSG(ERR_TMP_QMAIL_QUEUE),": ",err + 1); strnum[fmt_ulong(strnum,qmail_qp(&qq))] = 0; strerr_die3x(0,INFO,"qp ",strnum); }
int main(int argc, char *argv[]) { set_workdir(argv[0]); return v7_main(argc, argv, pre_freeze_init, pre_init, post_init); }