コード例 #1
0
ファイル: events.cpp プロジェクト: igrek51/SongBook
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);
}
コード例 #2
0
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);
}
コード例 #3
0
ファイル: main.c プロジェクト: GDI123/smart.js
int main(int argc, char *argv[]) {
  set_workdir(argv[0]);
  return v7_main(argc, argv, pre_freeze_init, pre_init, post_init);
}