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,8 +84,6 @@ | ||
| 84 | 84 | ||
| 85 | LIB3270_EXPORT gchar * pw3270_get_datadir(const gchar *first_element, ...); | 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 | LIB3270_EXPORT void pw3270_set_host_charset(GtkWidget *widget, const gchar *name); | 87 | LIB3270_EXPORT void pw3270_set_host_charset(GtkWidget *widget, const gchar *name); |
| 90 | LIB3270_EXPORT void pw3270_remap_from_xml(GtkWidget *widget, const gchar *name); | 88 | LIB3270_EXPORT void pw3270_remap_from_xml(GtkWidget *widget, const gchar *name); |
| 91 | 89 |
src/pw3270/dialog.c
| @@ -275,14 +275,6 @@ | @@ -275,14 +275,6 @@ | ||
| 275 | } | 275 | } |
| 276 | else | 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 | GtkWidget * dialog; | 278 | GtkWidget * dialog; |
| 287 | gchar * ptr; | 279 | gchar * ptr; |
| 288 | gchar * encattr = NULL; | 280 | gchar * encattr = NULL; |
| @@ -323,7 +315,6 @@ | @@ -323,7 +315,6 @@ | ||
| 323 | 315 | ||
| 324 | trace("Removing dialog %p",dialog); | 316 | trace("Removing dialog %p",dialog); |
| 325 | gtk_widget_destroy(dialog); | 317 | gtk_widget_destroy(dialog); |
| 326 | -#endif // _WIN32 | ||
| 327 | } | 318 | } |
| 328 | 319 | ||
| 329 | return 0; | 320 | return 0; |
| @@ -423,37 +414,14 @@ | @@ -423,37 +414,14 @@ | ||
| 423 | 414 | ||
| 424 | void paste_file_action(GtkAction *action, GtkWidget *widget) | 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 | const gchar * user_title = g_object_get_data(G_OBJECT(action),"title"); | 417 | const gchar * user_title = g_object_get_data(G_OBJECT(action),"title"); |
| 453 | const gchar * filename = g_object_get_data(G_OBJECT(action),"filename"); | 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 | GtkWidget * dialog; | 420 | GtkWidget * dialog; |
| 456 | gchar * ptr; | 421 | gchar * ptr; |
| 422 | + const gchar * encoding = NULL; | ||
| 423 | + | ||
| 424 | + g_get_charset(&encoding); | ||
| 457 | 425 | ||
| 458 | trace("Action %s activated on widget %p",gtk_action_get_name(action),widget); | 426 | trace("Action %s activated on widget %p",gtk_action_get_name(action),widget); |
| 459 | 427 | ||
| @@ -497,7 +465,6 @@ | @@ -497,7 +465,6 @@ | ||
| 497 | 465 | ||
| 498 | if(encattr) | 466 | if(encattr) |
| 499 | g_free(encattr); | 467 | g_free(encattr); |
| 500 | - */ | ||
| 501 | } | 468 | } |
| 502 | 469 | ||
| 503 | G_GNUC_INTERNAL void about_dialog_action(GtkAction *action, GtkWidget *widget) | 470 | G_GNUC_INTERNAL void about_dialog_action(GtkAction *action, GtkWidget *widget) |
| @@ -579,153 +546,3 @@ | @@ -579,153 +546,3 @@ | ||
| 579 | g_free(info); | 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 | - } |