Commit a7ce4605007565ae717aa20117278e14b40c9a16
1 parent
f2ab533a
Exists in
master
and in
5 other branches
Removing windows native dialog.
Showing
2 changed files
with
4 additions
and
189 deletions
Show diff stats
src/include/pw3270.h
| ... | ... | @@ -84,8 +84,6 @@ |
| 84 | 84 | |
| 85 | 85 | LIB3270_EXPORT gchar * pw3270_get_datadir(const gchar *first_element, ...); |
| 86 | 86 | |
| 87 | - LIB3270_EXPORT gchar * pw3270_file_chooser(GtkFileChooserAction action, const gchar *name, const gchar *title, const gchar *file); | |
| 88 | - | |
| 89 | 87 | LIB3270_EXPORT void pw3270_set_host_charset(GtkWidget *widget, const gchar *name); |
| 90 | 88 | LIB3270_EXPORT void pw3270_remap_from_xml(GtkWidget *widget, const gchar *name); |
| 91 | 89 | ... | ... |
src/pw3270/dialog.c
| ... | ... | @@ -275,14 +275,6 @@ |
| 275 | 275 | } |
| 276 | 276 | else |
| 277 | 277 | { |
| 278 | -#ifdef _WIN32 | |
| 279 | - gchar *name = pw3270_file_chooser(GTK_FILE_CHOOSER_ACTION_SAVE, "save_contents", gettext(user_title ? user_title : title), filename); | |
| 280 | - if(name) | |
| 281 | - { | |
| 282 | - save_text(toplevel,name,text,NULL,errmsg); | |
| 283 | - g_free(name); | |
| 284 | - } | |
| 285 | -#else | |
| 286 | 278 | GtkWidget * dialog; |
| 287 | 279 | gchar * ptr; |
| 288 | 280 | gchar * encattr = NULL; |
| ... | ... | @@ -323,7 +315,6 @@ |
| 323 | 315 | |
| 324 | 316 | trace("Removing dialog %p",dialog); |
| 325 | 317 | gtk_widget_destroy(dialog); |
| 326 | -#endif // _WIN32 | |
| 327 | 318 | } |
| 328 | 319 | |
| 329 | 320 | return 0; |
| ... | ... | @@ -423,37 +414,14 @@ |
| 423 | 414 | |
| 424 | 415 | void paste_file_action(GtkAction *action, GtkWidget *widget) |
| 425 | 416 | { |
| 426 | - const gchar * name = g_object_get_data(G_OBJECT(action),"filename"); | |
| 427 | - const gchar * charset = g_object_get_data(G_OBJECT(action),"charset"); | |
| 428 | - | |
| 429 | - trace("Action %s activated on widget %p",gtk_action_get_name(action),widget); | |
| 430 | - | |
| 431 | - if(name) { | |
| 432 | - | |
| 433 | - // Tem nome pre-definido, colca direto | |
| 434 | - paste_filename(widget,name,charset); | |
| 435 | - return; | |
| 436 | - | |
| 437 | - } | |
| 438 | - | |
| 439 | - | |
| 440 | - gchar * filename = pw3270_file_chooser( GTK_FILE_CHOOSER_ACTION_OPEN, | |
| 441 | - "paste", | |
| 442 | - g_object_get_data(G_OBJECT(action),"title"), | |
| 443 | - name | |
| 444 | - ); | |
| 445 | - | |
| 446 | - if(filename) { | |
| 447 | - paste_filename(widget,filename,charset); | |
| 448 | - g_free(filename); | |
| 449 | - } | |
| 450 | - | |
| 451 | - /* | |
| 452 | 417 | const gchar * user_title = g_object_get_data(G_OBJECT(action),"title"); |
| 453 | 418 | const gchar * filename = g_object_get_data(G_OBJECT(action),"filename"); |
| 454 | - gchar * encattr = NULL;g_get_charset(&encoding) | |
| 419 | + gchar * encattr = NULL; | |
| 455 | 420 | GtkWidget * dialog; |
| 456 | 421 | gchar * ptr; |
| 422 | + const gchar * encoding = NULL; | |
| 423 | + | |
| 424 | + g_get_charset(&encoding); | |
| 457 | 425 | |
| 458 | 426 | trace("Action %s activated on widget %p",gtk_action_get_name(action),widget); |
| 459 | 427 | |
| ... | ... | @@ -497,7 +465,6 @@ |
| 497 | 465 | |
| 498 | 466 | if(encattr) |
| 499 | 467 | g_free(encattr); |
| 500 | - */ | |
| 501 | 468 | } |
| 502 | 469 | |
| 503 | 470 | G_GNUC_INTERNAL void about_dialog_action(GtkAction *action, GtkWidget *widget) |
| ... | ... | @@ -579,153 +546,3 @@ |
| 579 | 546 | g_free(info); |
| 580 | 547 | } |
| 581 | 548 | |
| 582 | -#ifdef _WIN32 | |
| 583 | -static gpointer select_file(struct file *fl) { | |
| 584 | - | |
| 585 | - | |
| 586 | - switch(fl->action) { | |
| 587 | - case GTK_FILE_CHOOSER_ACTION_SAVE: // Receber arquivo | |
| 588 | - // https://msdn.microsoft.com/en-us/library/windows/desktop/ms646839(v=vs.85).aspx | |
| 589 | - // https://msdn.microsoft.com/en-us/library/windows/desktop/ms646829(v=vs.85).aspx#open_file | |
| 590 | - fl->ofn.Flags = OFN_OVERWRITEPROMPT | OFN_CREATEPROMPT | OFN_HIDEREADONLY; | |
| 591 | - fl->ok = GetSaveFileName(&fl->ofn); | |
| 592 | - break; | |
| 593 | - | |
| 594 | - case GTK_FILE_CHOOSER_ACTION_OPEN: // Enviar arquivo | |
| 595 | - // https://msdn.microsoft.com/en-us/library/windows/desktop/ms646928(v=vs.85).aspx | |
| 596 | - fl->ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; | |
| 597 | - fl->ok = GetOpenFileName(&fl->ofn); | |
| 598 | - break; | |
| 599 | - } | |
| 600 | - | |
| 601 | - fl->enabled = FALSE; | |
| 602 | - | |
| 603 | - return 0; | |
| 604 | -} | |
| 605 | -#endif // _WIN32 | |
| 606 | - | |
| 607 | - LIB3270_EXPORT gchar * pw3270_file_chooser(GtkFileChooserAction action, const gchar *name, const gchar *title, const gchar *file) | |
| 608 | - { | |
| 609 | - gchar * filename = NULL; | |
| 610 | - | |
| 611 | -#if defined(_WIN32) | |
| 612 | - | |
| 613 | - GThread * thd; | |
| 614 | - struct file fl; | |
| 615 | - GtkWidget * dialog = pw3270_get_toplevel(); | |
| 616 | - GdkWindow * win = gtk_widget_get_window(GTK_WIDGET(dialog)); | |
| 617 | - | |
| 618 | - gtk_widget_set_sensitive(GTK_WIDGET(dialog),FALSE); | |
| 619 | - | |
| 620 | - memset(&fl,0,sizeof(fl)); | |
| 621 | - fl.ofn.lStructSize = sizeof(fl.ofn); | |
| 622 | - fl.action = action; | |
| 623 | - fl.ofn.hwndOwner = GDK_WINDOW_HWND(win); | |
| 624 | - fl.ofn.lpstrFile = fl.szName; | |
| 625 | - fl.ofn.lpstrTitle = title; | |
| 626 | - | |
| 627 | - // Set lpstrFile[0] to '\0' so that GetOpenFileName does not | |
| 628 | - // use the contents of szFile to initialize itself. | |
| 629 | - fl.ofn.lpstrFile[0] = '\0'; | |
| 630 | - fl.ofn.nMaxFile = sizeof(fl.szName); | |
| 631 | - | |
| 632 | - fl.ofn.lpstrInitialDir = NULL; | |
| 633 | - fl.ofn.nMaxFileTitle = 0; | |
| 634 | - | |
| 635 | - // Guarda o valor atual | |
| 636 | - if(file && *file) | |
| 637 | - { | |
| 638 | - strncpy(fl.szName,file,fl.ofn.nMaxFile); | |
| 639 | - } | |
| 640 | - else | |
| 641 | - { | |
| 642 | - gchar *ptr = get_string_from_config("files",name,""); | |
| 643 | - if(*ptr) | |
| 644 | - strncpy(fl.szName,ptr,fl.ofn.nMaxFile); | |
| 645 | - else | |
| 646 | - fl.ofn.lpstrInitialDir = g_get_user_special_dir(G_USER_DIRECTORY_DOCUMENTS); | |
| 647 | - g_free(ptr); | |
| 648 | - } | |
| 649 | - | |
| 650 | - thd = g_thread_new("GetFileName",(GThreadFunc) select_file, &fl); | |
| 651 | - | |
| 652 | - fl.enabled = TRUE; | |
| 653 | - while(fl.enabled) { | |
| 654 | - g_main_context_iteration(NULL,TRUE); | |
| 655 | - } | |
| 656 | - | |
| 657 | - g_thread_unref(thd); | |
| 658 | - | |
| 659 | - if(fl.ok) { | |
| 660 | - filename = g_strdup(fl.szName); | |
| 661 | - } | |
| 662 | - | |
| 663 | - gtk_widget_set_sensitive(GTK_WIDGET(dialog),TRUE); | |
| 664 | - | |
| 665 | -#else | |
| 666 | - static const struct _btn | |
| 667 | - { | |
| 668 | - const gchar * button; | |
| 669 | - GtkFileChooserAction action; | |
| 670 | - } btn[] = | |
| 671 | - { | |
| 672 | - { GTK_STOCK_OPEN, GTK_FILE_CHOOSER_ACTION_OPEN }, | |
| 673 | - { GTK_STOCK_SAVE, GTK_FILE_CHOOSER_ACTION_SAVE }, | |
| 674 | - { GTK_STOCK_OK, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER }, | |
| 675 | - { GTK_STOCK_OK, GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER } | |
| 676 | - }; | |
| 677 | - | |
| 678 | - GtkWidget * dialog; | |
| 679 | - gchar * ptr; | |
| 680 | - const gchar * button = GTK_STOCK_OK; | |
| 681 | - int f; | |
| 682 | - | |
| 683 | - for(f=0;f<G_N_ELEMENTS(btn);f++) | |
| 684 | - { | |
| 685 | - if(action == btn[f].action) | |
| 686 | - { | |
| 687 | - button = btn[f].button; | |
| 688 | - break; | |
| 689 | - } | |
| 690 | - } | |
| 691 | - | |
| 692 | - dialog = gtk_file_chooser_dialog_new( title, | |
| 693 | - GTK_WINDOW(pw3270_get_toplevel()), | |
| 694 | - action, | |
| 695 | - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
| 696 | - button, GTK_RESPONSE_ACCEPT, | |
| 697 | - NULL ); | |
| 698 | - | |
| 699 | - if(action == GTK_FILE_CHOOSER_ACTION_SAVE) | |
| 700 | - { | |
| 701 | - gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); | |
| 702 | - g_signal_connect(GTK_FILE_CHOOSER(dialog), "confirm-overwrite", G_CALLBACK(confirm_overwrite), G_OBJECT(dialog)); | |
| 703 | - } | |
| 704 | - | |
| 705 | - if(file && *file) | |
| 706 | - { | |
| 707 | - gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog),file); | |
| 708 | - } | |
| 709 | - else | |
| 710 | - { | |
| 711 | - ptr = get_string_from_config("files",name,""); | |
| 712 | - if(*ptr) | |
| 713 | - gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog),ptr); | |
| 714 | - else | |
| 715 | - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog),g_get_user_special_dir(G_USER_DIRECTORY_DOCUMENTS)); | |
| 716 | - g_free(ptr); | |
| 717 | - } | |
| 718 | - | |
| 719 | - if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) | |
| 720 | - { | |
| 721 | - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); | |
| 722 | - } | |
| 723 | - | |
| 724 | - gtk_widget_destroy(dialog); | |
| 725 | -#endif // _WIN32 | |
| 726 | - | |
| 727 | - if(filename && *filename) | |
| 728 | - set_string_to_config("files",name,"%s",filename); | |
| 729 | - | |
| 730 | - return filename; | |
| 731 | - } | ... | ... |