Gtk3 by Hombre, issue 2807
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <gtkmm.h>
|
||||
#include "rtwindow.h"
|
||||
#include "options.h"
|
||||
#include "preferences.h"
|
||||
@@ -133,10 +134,8 @@ RTWindow::RTWindow ()
|
||||
}
|
||||
|
||||
set_title_decorated("");
|
||||
property_allow_shrink() = true;
|
||||
set_default_size(options.windowWidth, options.windowHeight);
|
||||
set_modal(false);
|
||||
set_resizable(true);
|
||||
|
||||
if (options.windowMaximized) {
|
||||
maximize();
|
||||
@@ -176,28 +175,25 @@ RTWindow::RTWindow ()
|
||||
fpanel->setParent (this);
|
||||
|
||||
// decorate tab
|
||||
Gtk::Grid* fpanelLabelGrid = Gtk::manage (new Gtk::Grid ());
|
||||
setExpandAlignProperties(fpanelLabelGrid, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
|
||||
Gtk::Label* fpl = Gtk::manage (new Gtk::Label( Glib::ustring(" ") + M("MAIN_FRAME_EDITOR") ));
|
||||
|
||||
if (options.mainNBVertical) {
|
||||
mainNB->set_tab_pos (Gtk::POS_LEFT);
|
||||
|
||||
Gtk::VBox* vbf = Gtk::manage (new Gtk::VBox ());
|
||||
vbf->pack_start (*Gtk::manage (new Gtk::Image (Gtk::Stock::DIRECTORY, Gtk::ICON_SIZE_MENU)));
|
||||
Gtk::Label* l = Gtk::manage(new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_FILEBROWSER")));
|
||||
l->set_angle (90);
|
||||
vbf->pack_start (*l);
|
||||
vbf->set_spacing (2);
|
||||
vbf->set_tooltip_markup (M("MAIN_FRAME_FILEBROWSER_TOOLTIP"));
|
||||
vbf->show_all ();
|
||||
mainNB->append_page (*fpanel, *vbf);
|
||||
fpl->set_angle (90);
|
||||
fpanelLabelGrid->attach_next_to(*fpl, Gtk::POS_BOTTOM, 1, 1);
|
||||
fpanelLabelGrid->attach_next_to(*Gtk::manage (new RTImage ("gtk-directory.png")), *fpl, Gtk::POS_TOP, 1, 1);
|
||||
} else {
|
||||
Gtk::HBox* hbf = Gtk::manage (new Gtk::HBox ());
|
||||
hbf->pack_start (*Gtk::manage (new Gtk::Image (Gtk::Stock::DIRECTORY, Gtk::ICON_SIZE_MENU)));
|
||||
hbf->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_FILEBROWSER"))));
|
||||
hbf->set_spacing (2);
|
||||
hbf->set_tooltip_markup (M("MAIN_FRAME_FILEBROWSER_TOOLTIP"));
|
||||
hbf->show_all ();
|
||||
mainNB->append_page (*fpanel, *hbf);
|
||||
fpanelLabelGrid->attach_next_to(*fpl, Gtk::POS_LEFT, 1, 1);
|
||||
fpanelLabelGrid->attach_next_to(*Gtk::manage (new RTImage ("gtk-directory.png")), *fpl, Gtk::POS_RIGHT, 1, 1);
|
||||
}
|
||||
|
||||
fpanelLabelGrid->set_tooltip_markup (M("MAIN_FRAME_FILEBROWSER_TOOLTIP"));
|
||||
fpanelLabelGrid->show_all ();
|
||||
mainNB->append_page (*fpanel, *fpanelLabelGrid);
|
||||
|
||||
|
||||
bpanel = Gtk::manage ( new BatchQueuePanel (fpanel->fileCatalog) );
|
||||
bpanel->setParent (this);
|
||||
|
||||
@@ -215,90 +211,86 @@ RTWindow::RTWindow ()
|
||||
epanel->setParent (this);
|
||||
|
||||
// decorate tab
|
||||
Gtk::Grid* editorLabelGrid = Gtk::manage (new Gtk::Grid ());
|
||||
setExpandAlignProperties(editorLabelGrid, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
|
||||
Gtk::Label* el = Gtk::manage (new Gtk::Label( Glib::ustring(" ") + M("MAIN_FRAME_EDITOR") ));
|
||||
|
||||
if (options.mainNBVertical) {
|
||||
Gtk::VBox* vbe = Gtk::manage (new Gtk::VBox ());
|
||||
vbe->pack_start (*Gtk::manage (new RTImage ("rt-logo.png")));
|
||||
Gtk::Label* l = Gtk::manage (new Gtk::Label( Glib::ustring(" ") + M("MAIN_FRAME_EDITOR") ));
|
||||
//l->set_markup(Glib::ustring("<b>Editor</b>")); Bold difficult to read
|
||||
l->set_angle (90);
|
||||
vbe->pack_start (*l);
|
||||
vbe->set_spacing (2);
|
||||
vbe->set_tooltip_markup (M("MAIN_FRAME_EDITOR_TOOLTIP"));
|
||||
vbe->show_all ();
|
||||
epanel->tbTopPanel_1_visible(true); //show the toggle Top Panel button
|
||||
mainNB->append_page (*epanel, *vbe);
|
||||
el->set_angle (90);
|
||||
editorLabelGrid->attach_next_to(*el, Gtk::POS_BOTTOM, 1, 1);
|
||||
editorLabelGrid->attach_next_to(*Gtk::manage (new RTImage ("rt-logo.png")), *el, Gtk::POS_TOP, 1, 1);
|
||||
} else {
|
||||
Gtk::HBox* hbe = Gtk::manage (new Gtk::HBox ());
|
||||
hbe->pack_start (*Gtk::manage (new RTImage ("rt-logo.png")));
|
||||
hbe->pack_start (*Gtk::manage (new Gtk::Label( Glib::ustring(" ") + M("MAIN_FRAME_EDITOR") )));
|
||||
hbe->set_spacing (2);
|
||||
hbe->set_tooltip_markup (M("MAIN_FRAME_EDITOR_TOOLTIP"));
|
||||
hbe->show_all ();
|
||||
epanel->tbTopPanel_1_visible(true); //show the toggle Top Panel button
|
||||
mainNB->append_page (*epanel, *hbe);
|
||||
editorLabelGrid->attach_next_to(*el, Gtk::POS_LEFT, 1, 1);
|
||||
editorLabelGrid->attach_next_to(*Gtk::manage (new RTImage ("rt-logo.png")), *el, Gtk::POS_RIGHT, 1, 1);
|
||||
}
|
||||
|
||||
editorLabelGrid->set_tooltip_markup (M("MAIN_FRAME_EDITOR_TOOLTIP"));
|
||||
editorLabelGrid->show_all ();
|
||||
epanel->tbTopPanel_1_visible(true); //show the toggle Top Panel button
|
||||
mainNB->append_page (*epanel, *editorLabelGrid);
|
||||
|
||||
mainNB->set_current_page (mainNB->page_num (*fpanel));
|
||||
|
||||
Gtk::VBox* mainBox = Gtk::manage (new Gtk::VBox ());
|
||||
mainBox->pack_start (*mainNB);
|
||||
//Gtk::VBox* mainBox = Gtk::manage (new Gtk::VBox ());
|
||||
//mainBox->pack_start (*mainNB);
|
||||
|
||||
// filling bottom box
|
||||
iFullscreen = new RTImage ("fullscreen.png");
|
||||
iFullscreen_exit = new RTImage ("fullscreen-exit.png");
|
||||
|
||||
Gtk::LinkButton* rtWeb = Gtk::manage (new Gtk::LinkButton ("http://rawtherapee.com"));
|
||||
//Gtk::LinkButton* rtWeb = Gtk::manage (new Gtk::LinkButton ("http://rawtherapee.com")); // unused... but fail to be linked anyway !?
|
||||
//Gtk::Button* preferences = Gtk::manage (new Gtk::Button (M("MAIN_BUTTON_PREFERENCES")+"..."));
|
||||
Gtk::Button* preferences = Gtk::manage (new Gtk::Button ());
|
||||
preferences->set_hexpand(false);
|
||||
preferences->set_vexpand(false);
|
||||
preferences->set_halign(Gtk::ALIGN_CENTER);
|
||||
preferences->set_valign(Gtk::ALIGN_CENTER);
|
||||
preferences->set_image (*Gtk::manage(new RTImage ("gtk-preferences.png")));
|
||||
preferences->set_tooltip_markup (M("MAIN_BUTTON_PREFERENCES"));
|
||||
preferences->signal_clicked().connect( sigc::mem_fun(*this, &RTWindow::showPreferences) );
|
||||
|
||||
//btn_fullscreen = Gtk::manage( new Gtk::Button(M("MAIN_BUTTON_FULLSCREEN")));
|
||||
btn_fullscreen = Gtk::manage( new Gtk::Button());
|
||||
btn_fullscreen->set_hexpand(false);
|
||||
btn_fullscreen->set_vexpand(false);
|
||||
btn_fullscreen->set_halign(Gtk::ALIGN_CENTER);
|
||||
btn_fullscreen->set_valign(Gtk::ALIGN_CENTER);
|
||||
btn_fullscreen->set_tooltip_markup (M("MAIN_BUTTON_FULLSCREEN"));
|
||||
btn_fullscreen->set_image (*iFullscreen);
|
||||
btn_fullscreen->signal_clicked().connect( sigc::mem_fun(*this, &RTWindow::toggle_fullscreen) );
|
||||
#if GTKMM_MINOR_VERSION >= 20
|
||||
setExpandAlignProperties(&prProgBar, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
|
||||
prProgBar.set_show_text(true);
|
||||
|
||||
Gtk::Grid* actionGrid = Gtk::manage (new Gtk::Grid ());
|
||||
setExpandAlignProperties(actionGrid, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
|
||||
|
||||
if (options.mainNBVertical) {
|
||||
Gtk::VBox* bottomVBox = Gtk::manage (new Gtk::VBox ());
|
||||
bottomVBox->pack_start (prProgBar, Gtk::PACK_SHRINK, 1);
|
||||
bottomVBox->pack_end (*preferences, Gtk::PACK_SHRINK, 0);
|
||||
bottomVBox->pack_end (*btn_fullscreen, Gtk::PACK_EXPAND_WIDGET, 1);
|
||||
prProgBar.set_orientation(Gtk::PROGRESS_BOTTOM_TO_TOP);
|
||||
mainNB->set_action_widget( bottomVBox, Gtk::PACK_END);
|
||||
bottomVBox->show_all();
|
||||
actionGrid->attach_next_to(*btn_fullscreen, Gtk::POS_BOTTOM, 1, 1);
|
||||
actionGrid->attach_next_to(*preferences, *btn_fullscreen, Gtk::POS_TOP, 1, 1);
|
||||
actionGrid->attach_next_to(prProgBar, *preferences, Gtk::POS_TOP, 1, 1);
|
||||
prProgBar.set_orientation(Gtk::ORIENTATION_VERTICAL);
|
||||
//prProgBar.set_halign(Gtk::ALIGN_FILL); prProgBar.set_valign(Gtk::ALIGN_FILL);
|
||||
mainNB->set_action_widget(actionGrid, Gtk::PACK_END);
|
||||
} else {
|
||||
Gtk::HBox* bottomHBox = Gtk::manage (new Gtk::HBox ());
|
||||
bottomHBox->pack_end (*btn_fullscreen, Gtk::PACK_SHRINK, 1);
|
||||
bottomHBox->pack_end (*preferences, Gtk::PACK_SHRINK, 0);
|
||||
bottomHBox->pack_start (prProgBar, Gtk::PACK_EXPAND_WIDGET, 1);
|
||||
mainNB->set_action_widget( bottomHBox, Gtk::PACK_END);
|
||||
bottomHBox->show_all();
|
||||
actionGrid->attach_next_to(*btn_fullscreen, Gtk::POS_RIGHT, 1, 1);
|
||||
actionGrid->attach_next_to(*preferences, *btn_fullscreen, Gtk::POS_LEFT, 1, 1);
|
||||
actionGrid->attach_next_to(prProgBar, *preferences, Gtk::POS_LEFT, 1, 1);
|
||||
prProgBar.set_orientation(Gtk::ORIENTATION_HORIZONTAL);
|
||||
//prProgBar.set_halign(Gtk::ALIGN_FILL); prProgBar.set_valign(Gtk::ALIGN_FILL);
|
||||
mainNB->set_action_widget(actionGrid, Gtk::PACK_END);
|
||||
}
|
||||
|
||||
#else
|
||||
Gtk::HBox* bottomBox = Gtk::manage (new Gtk::HBox ());
|
||||
bottomBox->pack_end (*btn_fullscreen, Gtk::PACK_SHRINK, 1);
|
||||
bottomBox->pack_end (*preferences, Gtk::PACK_SHRINK, 0);
|
||||
bottomBox->pack_start (prProgBar, Gtk::PACK_EXPAND_WIDGET, 1);
|
||||
mainBox->pack_start (*bottomBox, Gtk::PACK_SHRINK, 1);
|
||||
#endif
|
||||
actionGrid->show_all();
|
||||
|
||||
pldBridge = new PLDBridge(static_cast<rtengine::ProgressListener*>(this));
|
||||
|
||||
Glib::RefPtr<Gtk::RcStyle> style = Gtk::RcStyle::create ();
|
||||
style->set_xthickness (0);
|
||||
style->set_ythickness (0);
|
||||
rtWeb->modify_style (style);
|
||||
|
||||
add (*mainBox);
|
||||
//add (*mainBox);
|
||||
add (*mainNB);
|
||||
show_all ();
|
||||
}
|
||||
|
||||
if (!isSingleTabMode() && !simpleEditor) {
|
||||
epanel->hide_all();
|
||||
epanel->hide();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -350,7 +342,7 @@ void RTWindow::on_realize ()
|
||||
fpanel->setAspect();
|
||||
}
|
||||
|
||||
cursorManager.init (get_window());
|
||||
mainWindowCursorManager.init(get_window());
|
||||
|
||||
// Check if first run of this version, then display the Release Notes text
|
||||
if (options.version != versionString) {
|
||||
@@ -404,7 +396,7 @@ bool RTWindow::on_window_state_event(GdkEventWindowState* event)
|
||||
return true;
|
||||
}
|
||||
|
||||
void RTWindow::on_mainNB_switch_page(GtkNotebookPage* page, guint page_num)
|
||||
void RTWindow::on_mainNB_switch_page(Gtk::Widget* widget, guint page_num)
|
||||
{
|
||||
if(!on_delete_has_run) {
|
||||
if(isEditorPanel(page_num)) {
|
||||
@@ -454,11 +446,8 @@ void RTWindow::addEditorPanel (EditorPanel* ep, const std::string &name)
|
||||
closeb->set_relief (Gtk::RELIEF_NONE);
|
||||
closeb->set_focus_on_click (false);
|
||||
// make the button as small as possible
|
||||
Glib::RefPtr<Gtk::RcStyle> style = Gtk::RcStyle::create ();
|
||||
style->set_xthickness (0);
|
||||
style->set_ythickness (0);
|
||||
printf("TODO: make #tabClose as smalla s possible through css\n");
|
||||
|
||||
closeb->modify_style (style);
|
||||
closeb->signal_clicked().connect( sigc::bind (sigc::mem_fun(*this, &RTWindow::remEditorPanel) , ep));
|
||||
hb->pack_end (*closeb);
|
||||
hb->set_spacing (2);
|
||||
@@ -544,13 +533,13 @@ bool RTWindow::keyPressed (GdkEventKey* event)
|
||||
#if defined(__APPLE__)
|
||||
bool apple_cmd = event->state & GDK_MOD2_MASK;
|
||||
|
||||
if (event->keyval == GDK_q && apple_cmd) {
|
||||
if (event->keyval == GDK_KEY_q && apple_cmd) {
|
||||
try_quit = true;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
if (event->keyval == GDK_q && ctrl) {
|
||||
if (event->keyval == GDK_KEY_q && ctrl) {
|
||||
try_quit = true;
|
||||
}
|
||||
|
||||
@@ -562,7 +551,7 @@ bool RTWindow::keyPressed (GdkEventKey* event)
|
||||
}
|
||||
}
|
||||
|
||||
if(event->keyval == GDK_F11) {
|
||||
if(event->keyval == GDK_KEY_F11) {
|
||||
toggle_fullscreen();
|
||||
}
|
||||
|
||||
@@ -574,22 +563,22 @@ bool RTWindow::keyPressed (GdkEventKey* event)
|
||||
|
||||
if (ctrl) {
|
||||
switch(event->keyval) {
|
||||
case GDK_F2: // file browser panel
|
||||
case GDK_KEY_F2: // file browser panel
|
||||
mainNB->set_current_page (mainNB->page_num (*fpanel));
|
||||
return true;
|
||||
|
||||
case GDK_F3: // batch queue panel
|
||||
case GDK_KEY_F3: // batch queue panel
|
||||
mainNB->set_current_page (mainNB->page_num (*bpanel));
|
||||
return true;
|
||||
|
||||
case GDK_F4: //single tab mode, editor panel
|
||||
case GDK_KEY_F4: //single tab mode, editor panel
|
||||
if (isSingleTabMode() && epanel) {
|
||||
mainNB->set_current_page (mainNB->page_num (*epanel));
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case GDK_w: //multi-tab mode, close editor panel
|
||||
case GDK_KEY_w: //multi-tab mode, close editor panel
|
||||
if (!isSingleTabMode() &&
|
||||
mainNB->get_current_page() != mainNB->page_num(*fpanel) &&
|
||||
mainNB->get_current_page() != mainNB->page_num(*bpanel)) {
|
||||
|
Reference in New Issue
Block a user