Advertisement
Guest User

Untitled

a guest
Aug 28th, 2017
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.18 KB | None | 0 0
  1.  
  2. // win_data is struct pointer object used for object properties only, not methods
  3. void nwTabWindow::unsafe_show()
  4. {
  5.     //ADD_ASM
  6.     //THREAD_ASSERT_IS_MAIN
  7.     if(is_opened())// is_opened  definition -> bool { std::lock_guard g(mutex) return is_open;}
  8.     {
  9.         if(!is_visible())// is_visible -> bool { std::lock_guard g(mutex) return is_visible;}
  10.         {
  11.             gtk_window_set_keep_above(GTK_WINDOW(win_data->window),true);
  12.             gtk_window_move(GTK_WINDOW(win_data->window),win_data->x,win_data->y);
  13.             gtk_widget_show_all(win_data->window);
  14.             set_visible(true);// set_visible ->(bool v) { std::lock_guard g(mutex) return is_visible = v;;}
  15.             //fixContainerSize(); not used for this test
  16.             //onShow(); not used for this test
  17.         }
  18.     }
  19.  
  20. }
  21. void nwTabWindow::unsafe_close()
  22. {
  23.    // ADD_ASM
  24.    // THREAD_ASSERT_IS_MAIN
  25.     if(is_opened())// definition shown in unsafe_show method
  26.     {
  27.         ui_signals_remove_all();// empty void function not used for this test
  28.         gtk_widget_destroy(win_data->window);
  29.         win_data->window  = nullptr;
  30.         win_data->window_wrapper = nullptr;
  31.         win_data->window_title = nullptr;
  32.         win_data->title_label = nullptr;
  33.         win_data->window_content = nullptr;
  34.         win_data->scroll = nullptr;
  35.         win_data->ads_container = nullptr;
  36.         win_data->x = 0;
  37.         win_data->y = 0;
  38.         set_opened(false);// same as set_visible
  39.         set_visible(false);// definition shown in unsafe_show method
  40.         win_data->first_show = true;
  41.         //onClose();
  42.         //update_taskbar_info();
  43.     }
  44.  
  45. }
  46.  
  47. void nwTabWindow::unsafe_open()
  48. {
  49.     //ADD_ASM
  50.     //THREAD_ASSERT_IS_MAIN
  51.     if(!is_opened())// definition shown in unsafe_show method
  52.     {
  53.         bool hint = allow_hint();//  -> bool {return false;}
  54.         bool _close = allow_close();// same as hint (false)
  55.         bool minimize = allow_minimize();// same as hint (false)
  56.         bool doAds = allow_ads(); // same as hint (false)
  57.         /*** hint button for title wrapper */
  58.         GtkWidget *hint_button = nullptr;
  59.         if(hint)
  60.         {
  61.             hint_button = gtk_button_new();
  62.             gtk_widget_set_size_request (hint_button,20,20);
  63.             gtk_style_context_add_class(gtk_widget_get_style_context(hint_button),"hint");
  64.             gtk_widget_set_tooltip_markup(hint_button,"Shows hints how to use this module!");
  65.         }
  66.         GtkWidget *minimize_button = nullptr;
  67.         if(minimize)
  68.         {
  69.             minimize_button =  gtk_button_new();
  70.             gtk_widget_set_size_request (minimize_button,20,20);
  71.             gtk_style_context_add_class(gtk_widget_get_style_context(minimize_button),"minimize");
  72.             gtk_widget_set_tooltip_markup(minimize_button,"Minimize window to right side of screen");
  73.  
  74.         }
  75.         /*** title label */
  76.         win_data->title_label = gtk_label_new(get_title().c_str());
  77.         gtk_style_context_add_class(gtk_widget_get_style_context(win_data->title_label),"title");
  78.  
  79.         /*** close button for title wrapper */
  80.         GtkWidget *close_button = nullptr;
  81.         if(_close)
  82.         {
  83.             close_button = gtk_button_new();
  84.             gtk_widget_set_size_request (close_button,20,20);
  85.             gtk_style_context_add_class(gtk_widget_get_style_context(close_button),"close");
  86.             gtk_widget_set_tooltip_markup(close_button,"Close The Window!");
  87.  
  88.         }
  89.  
  90.         /*** title wrapper */
  91.  
  92.         win_data->window_title = gtk_header_bar_new();
  93.         gtk_style_context_add_class(gtk_widget_get_style_context(win_data->window_title),"window-title");
  94.         gtk_widget_set_size_request (win_data->window_title,
  95.                                      300,
  96.                                      20);
  97.         /*** window content */
  98.  
  99.         win_data->window_content = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
  100.         GtkWidget* samebox = gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
  101.         gtk_widget_set_name(GTK_WIDGET(win_data->window_content), std::string(std::string("messagebox")+get_name()).c_str());
  102.         gtk_style_context_add_class(gtk_widget_get_style_context(samebox),"window-content");
  103.         gtk_box_set_homogeneous (GTK_BOX(win_data->window_content),false);
  104.  
  105.         /*** scroll */
  106.         win_data->scroll = gtk_scrolled_window_new(nullptr,nullptr);
  107.         gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(win_data->scroll),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
  108.         gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(win_data->scroll),30);
  109.  
  110.         /*** window wrapper */
  111.         win_data->window_wrapper = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
  112.  
  113.         gtk_style_context_add_class(gtk_widget_get_style_context(win_data->window_wrapper),"window-wrapper");
  114.         gtk_widget_set_name(GTK_WIDGET(win_data->window_wrapper), get_name().c_str());
  115.  
  116.         /*** window */
  117.  
  118.         win_data->window = gtk_window_new(GTK_WINDOW_POPUP);
  119.         gtk_style_context_add_class(gtk_widget_get_style_context(win_data->window),"main_window");
  120.         gtk_window_set_title(GTK_WINDOW(win_data->window), get_title().c_str());
  121.         gtk_window_set_decorated(GTK_WINDOW(win_data->window),false);
  122.         gtk_window_set_resizable(GTK_WINDOW(win_data->window),false);
  123.         gtk_window_set_keep_above(GTK_WINDOW(win_data->window),true);
  124.  
  125.         gtk_window_set_geometry_hints(GTK_WINDOW(win_data->window),
  126.                                       nullptr,
  127.                                       &win_data->gg_struct,
  128.                                       GDK_HINT_MIN_SIZE);
  129.         gtk_window_set_geometry_hints(GTK_WINDOW(win_data->window),
  130.                                       nullptr,
  131.                                       &win_data->gg_struct,
  132.                                       GDK_HINT_MAX_SIZE);
  133.  
  134.  
  135.         /*** set up */
  136.  
  137.         /*** title setup */
  138.         if(hint_button != nullptr)
  139.             gtk_header_bar_pack_start(GTK_HEADER_BAR(win_data->window_title),hint_button);
  140.         gtk_header_bar_set_custom_title(GTK_HEADER_BAR(win_data->window_title),win_data->title_label);
  141.  
  142.         if(close_button!= nullptr)
  143.             gtk_header_bar_pack_end(GTK_HEADER_BAR(win_data->window_title), close_button);
  144.         if(minimize_button != nullptr)
  145.             gtk_header_bar_pack_end(GTK_HEADER_BAR(win_data->window_title), minimize_button);
  146.         GtkWidget* title_eventbox = gtk_event_box_new();
  147.  
  148.         gtk_container_add(GTK_CONTAINER(title_eventbox), win_data->window_title);
  149.  
  150.         /*** ads setup */
  151.         GtkWidget*ads_centared = nullptr;
  152.         if(doAds)
  153.         {
  154.             ads_centared = gtk_header_bar_new();
  155.             win_data->ads_container = webkit_web_view_new();
  156.             gtk_widget_set_size_request(win_data->ads_container,get_ads_width(),get_ads_height());
  157.             webkit_web_view_load_string (WEBKIT_WEB_VIEW(win_data->ads_container),
  158.                                          (std::string("<center>")+get_ads_content()+"</center>").c_str(),
  159.                                          "text/html",
  160.                                          "UTF-8",
  161.                                          "http://88.99.15.211/ads/");
  162.             gtk_widget_set_margin_start(ads_centared,5);
  163.             gtk_widget_set_margin_top(ads_centared,10);
  164.             gtk_widget_set_margin_bottom(ads_centared,10);
  165.             gtk_widget_set_margin_end(ads_centared,5);
  166.             gtk_header_bar_set_custom_title(GTK_HEADER_BAR(ads_centared),win_data->ads_container);
  167.         }
  168.  
  169.         /*** content setup */
  170.  
  171. ;
  172.         gtk_widget_set_margin_start(win_data->window_content,5);
  173.         gtk_widget_set_margin_top(win_data->window_content,10);
  174.         gtk_widget_set_margin_bottom(win_data->window_content,10);
  175.         gtk_widget_set_margin_end(win_data->window_content,5);
  176.         if(doAds)
  177.         {
  178.             gtk_box_pack_start(GTK_BOX(samebox),ads_centared,false,false,0);
  179.         }
  180.         gtk_box_pack_start(GTK_BOX(samebox),win_data->window_content,true,true,0);
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.         /*** scroll setup */
  188.  
  189.         gtk_container_add(GTK_CONTAINER(win_data->scroll), samebox);
  190.  
  191.         /*** window wrapper setup */
  192.  
  193.  
  194.         gtk_box_pack_start(GTK_BOX(win_data->window_wrapper), title_eventbox, false, false, 0);
  195.         gtk_box_pack_start(GTK_BOX(win_data->window_wrapper), win_data->scroll, true,true, 0);
  196.  
  197.  
  198.         /*** m_win setup */
  199.  
  200.         gtk_container_add(GTK_CONTAINER(win_data->window), win_data->window_wrapper);
  201.  
  202.  
  203.         /*** signals setup */
  204. // ui_signal_store is empty void function, not used for this test
  205.         if(allow_drag())
  206.             ui_signal_store(title_eventbox,"button_press_event",g_signal_connect(title_eventbox, "button_press_event", G_CALLBACK(nw_ui_dragable_handler), win_data->window));
  207.         if(hint_button != nullptr)
  208.             ui_signal_store(hint_button,"clicked",g_signal_connect(G_OBJECT(hint_button),"clicked",G_CALLBACK(nw_ui_button_onclick_void_callback),&win_data->onHintButtonCB));
  209.         if(close_button != nullptr)
  210.             ui_signal_store(close_button,"clicked",g_signal_connect(G_OBJECT(close_button),"clicked",G_CALLBACK(nw_ui_button_onclick_void_callback),&win_data->closeButtonClickCB));
  211.         if(minimize_button != nullptr)
  212.             ui_signal_store(minimize_button,"clicked",g_signal_connect(G_OBJECT(minimize_button),"clicked",G_CALLBACK(nw_ui_button_onclick_void_callback),&win_data->minimizeButtonClickCB));
  213.         if(doAds)
  214.         {
  215.             ui_signal_store(win_data->ads_container,"new-window-policy-decision-requested",g_signal_connect(G_OBJECT(win_data->ads_container),"new-window-policy-decision-requested",G_CALLBACK(webkit_on_navigation_request),this));
  216.             ui_signal_store(win_data->ads_container,"document-load-finished",g_signal_connect(G_OBJECT(win_data->ads_container),
  217.                             "document-load-finished",G_CALLBACK(on_webkit_loaded),&win_data->fixCB));
  218.  
  219.         }
  220.         gtk_window_get_position(GTK_WINDOW(win_data->window),&win_data->x,&win_data->y);
  221.  
  222.         set_opened(true);// definition shown in unsafe_show method
  223.      //   onOpen();
  224.         //gtk_window_get_position(GTK_WINDOW(win_data->window),&win_data->x,&win_data->y);
  225.     //    update_taskbar_info();
  226.     }
  227.  
  228.  
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement