Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: some icons didn't follow icon theme #3109

Merged
merged 5 commits into from Jun 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions synfig-studio/src/gui/actionmanagers/layeractionmanager.cpp
Expand Up @@ -246,9 +246,9 @@ LayerActionManager::LayerActionManager():
)
);

action_select_all_child_layers_=Gtk::Action::create(
action_select_all_child_layers_=Gtk::Action::create_with_icon_name(
"select-all-child-layers",
Gtk::StockID("synfig-select_all_child_layers"),
"select_all_child_layers_icon",
_("Select All Child Layers"),_("Select All Child Layers")
);
action_select_all_child_layers_->set_sensitive(false);
Expand Down
4 changes: 2 additions & 2 deletions synfig-studio/src/gui/app.cpp
Expand Up @@ -905,9 +905,9 @@ init_ui_manager()
synfigapp::Action::Book::iterator iter;
for(iter=synfigapp::Action::book().begin();iter!=synfigapp::Action::book().end();++iter)
{
actions_action_group->add(Gtk::Action::create(
actions_action_group->add(Gtk::Action::create_with_icon_name(
"action-"+iter->second.name,
get_action_stock_id(iter->second),
get_action_icon_name(iter->second),
iter->second.local_name,iter->second.local_name
));
}
Expand Down
2 changes: 1 addition & 1 deletion synfig-studio/src/gui/canvasview.cpp
Expand Up @@ -1046,7 +1046,7 @@ CanvasView::create_top_toolbar()
top_toolbar->append(*create_action_toolbutton(App::ui_manager()->get_action("/toolbar-main/open")));
top_toolbar->append(*create_action_toolbutton(action_group->get_action("save")));
top_toolbar->append(*create_action_toolbutton(action_group->get_action("save-as")));
top_toolbar->append(*create_action_toolbutton(action_group->get_action("save-all")));
top_toolbar->append(*create_action_toolbutton(App::ui_manager()->get_action("/toolbar-main/save-all")));

// Separator
top_toolbar->append( *create_tool_separator() );
Expand Down
9 changes: 3 additions & 6 deletions synfig-studio/src/gui/docks/dock_canvases.cpp
Expand Up @@ -108,15 +108,12 @@ Dock_Canvases::create_canvas_tree()
canvas_tree=manage(new class Gtk::TreeView());
{
Gtk::TreeView::Column* column = Gtk::manage( new Gtk::TreeView::Column(_("ID")) );
// Gtk::CellRendererPixbuf* icon_cellrenderer = Gtk::manage( new Gtk::CellRendererPixbuf() );
Gtk::CellRendererPixbuf* icon_cellrenderer = Gtk::manage( new Gtk::CellRendererPixbuf() );

//column->pack_start(*icon_cellrenderer,false);
column->pack_start(canvas_tree_model.icon, false); //false = don't expand.
column->pack_start(*icon_cellrenderer, false); // false = dont expand.
column->pack_start(canvas_tree_model.label);

//#ifdef NDEBUG
// column->add_attribute(icon_cellrenderer->property_pixbuf(), canvas_tree_model.icon);
//#endif
column->add_attribute(*icon_cellrenderer, "icon_name", canvas_tree_model.icon_name);

canvas_tree->append_column(*column);
}
Expand Down
20 changes: 10 additions & 10 deletions synfig-studio/src/gui/docks/dock_history.cpp
Expand Up @@ -74,9 +74,9 @@ Dock_History::Dock_History():
App::signal_instance_deleted().connect(sigc::mem_fun(*this,&studio::Dock_History::delete_instance));
App::signal_instance_selected().connect(sigc::mem_fun(*this,&studio::Dock_History::set_selected_instance_signal));

action_group->add(Gtk::Action::create(
action_group->add(Gtk::Action::create_with_icon_name(
"clear-undo",
Gtk::StockID("synfig-clear_undo"),
"clear_undo_icon",
_("Clear Undo Stack"),
_("Clear the undo stack")
),
Expand All @@ -85,9 +85,9 @@ Dock_History::Dock_History():
&Dock_History::clear_undo
)
);
action_group->add(Gtk::Action::create(
action_group->add(Gtk::Action::create_with_icon_name(
"clear-redo",
Gtk::StockID("synfig-clear_redo"),
"clear_redo_icon",
_("Clear Redo Stack"),
_("Clear the redo stack")
),
Expand All @@ -96,9 +96,9 @@ Dock_History::Dock_History():
&Dock_History::clear_redo
)
);
action_group->add(Gtk::Action::create(
action_group->add(Gtk::Action::create_with_icon_name(
"clear-undo-and-redo",
Gtk::Stock::CLEAR,
"edit-clear",
_("Clear Undo and Redo Stacks"),
_("Clear the undo and redo stacks")
),
Expand All @@ -107,17 +107,17 @@ Dock_History::Dock_History():
&Dock_History::clear_undo_and_redo
)
);
action_group->add(Gtk::Action::create(
action_group->add(Gtk::Action::create_with_icon_name(
"undo",
Gtk::StockID("synfig-undo"),
"action_doc_undo_icon",
_("Undo"),
_("Undo the previous action")
),
sigc::ptr_fun(studio::App::undo)
);
action_group->add(Gtk::Action::create(
action_group->add(Gtk::Action::create_with_icon_name(
"redo",
Gtk::StockID("synfig-redo"),
"action_doc_redo_icon",
_("Redo"),
_("Redo the previously undone action")
),
Expand Down
34 changes: 6 additions & 28 deletions synfig-studio/src/gui/docks/dock_toolbox.cpp
Expand Up @@ -42,6 +42,7 @@
#include <gtkmm/stock.h>
#include <gtkmm/toolpalette.h>

#include <gui/statemanager.h>
#include <gui/app.h>
#include <gui/canvasview.h>
#include <gui/docks/dialog_tooloptions.h>
Expand Down Expand Up @@ -150,17 +151,6 @@ Dock_Toolbox::set_active_state(const synfig::String& statename)

synfigapp::Main::set_state(statename);

try {
for (const auto& item : state_button_map) {
if (item.first == statename && !item.second->get_active()) {
item.second->set_active(true);
break;
}
}
} catch (...) {
changing_state_ = false;
throw;
}

changing_state_ = false;
}
Expand Down Expand Up @@ -223,13 +213,9 @@ Dock_Toolbox::add_state(const Smach::state_base *state)

String name=state->get_name();

Gtk::StockItem stock_item;
Gtk::Stock::lookup(Gtk::StockID("synfig-"+name),stock_item);
Gtk::IconSize tool_icon_size = Gtk::IconSize::from_name("synfig-small_icon_16x16");
Gtk::Image *tool_icon = manage(new Gtk::Image(stock_item.get_stock_id(), tool_icon_size));
Glib::ustring tool_label = stock_item.get_label();
Gtk::RadioToolButton *tool_button = manage(new Gtk::RadioToolButton(*tool_icon, tool_label));
Gtk::RadioToolButton *tool_button = manage(new Gtk::RadioToolButton());
tool_button->set_group(radio_tool_button_group);
tool_button->set_related_action(App::get_state_manager()->get_action_group()->get_action("state-"+name));

// Keeps updating the tooltip if user changes the shortcut at runtime
tool_button->property_has_tooltip() = true;
Expand Down Expand Up @@ -260,12 +246,6 @@ Dock_Toolbox::add_state(const Smach::state_base *state)

state_button_map[name] = tool_button;

tool_button->signal_clicked().connect(
sigc::bind(
sigc::mem_fun(*this,&studio::Dock_Toolbox::change_state_),
state
)
);

refresh();
}
Expand All @@ -277,12 +257,10 @@ Dock_Toolbox::update_tools()
etl::handle<Instance> instance = App::get_selected_instance();
CanvasView::Handle canvas_view = App::get_selected_canvas_view();

// These next several lines just adjust the tool buttons
// so that they are only clickable when they should be.
// Disable buttons if there isn't any open document instance
bool sensitive = instance && canvas_view;
std::map<synfig::String,Gtk::ToggleToolButton *>::iterator iter;
for(iter=state_button_map.begin();iter!=state_button_map.end();++iter)
iter->second->set_sensitive(sensitive);
for (const auto& item : state_button_map)
item.second->set_sensitive(sensitive);

if (canvas_view && canvas_view->get_smach().get_state_name())
set_active_state(canvas_view->get_smach().get_state_name());
Expand Down
2 changes: 1 addition & 1 deletion synfig-studio/src/gui/docks/dock_toolbox.h
Expand Up @@ -62,7 +62,7 @@ class Dock_Toolbox : public Dockable
Gtk::ToolItemGroup *tool_item_group;
Gtk::Paned *tool_box_paned;

std::map<synfig::String,Gtk::ToggleToolButton *> state_button_map;
std::map<synfig::String, Gtk::RadioToolButton*> state_button_map;

bool changing_state_;

Expand Down
57 changes: 35 additions & 22 deletions synfig-studio/src/gui/iconcontroller.cpp
Expand Up @@ -446,29 +446,31 @@ studio::get_tree_pixbuf(Type &type)
return _tree_pixbuf_table_value_type[type.identifier];
}

#ifdef _WIN32
#define TEMPORARY_DELETE_MACRO DELETE
#undef DELETE
#endif

Gtk::StockID
studio::get_action_stock_id(const synfigapp::Action::BookEntry& action)
std::string
studio::get_action_icon_name(const synfigapp::Action::BookEntry& action)
{
Gtk::StockID stock_id;
if(action.task=="add") stock_id=Gtk::Stock::ADD;
else if(action.task=="connect") stock_id=Gtk::Stock::CONNECT;
else if(action.task=="disconnect") stock_id=Gtk::Stock::DISCONNECT;
else if(action.task=="insert") stock_id=Gtk::Stock::ADD;
else if(action.task=="lower") stock_id=Gtk::Stock::GO_DOWN;
else if(action.task=="move_bottom") stock_id=Gtk::Stock::GOTO_BOTTOM;
else if(action.task=="move_top") stock_id=Gtk::Stock::GOTO_TOP;
else if(action.task=="raise") stock_id=Gtk::Stock::GO_UP;
else if(action.task=="remove") stock_id=Gtk::Stock::DELETE;
else if(action.task=="set_off") stock_id=Gtk::Stock::NO;
else if(action.task=="set_on") stock_id=Gtk::Stock::YES;
else stock_id=Gtk::StockID("synfig-"+
action.task);
return stock_id;
// maps action task -> icon name
const std::map<std::string, std::string> action_icon_map = {
{"add", "list-add"},
{"insert", "list-add"},
{"remove", "gtk-delete"},
rodolforg marked this conversation as resolved.
Show resolved Hide resolved
{"connect", "gtk-connect"},
{"disconnect", "gtk-disconnect"},
{"raise", "go-up"},
{"lower", "go-down"},
{"move_top", "go-top"},
{"move_bottom", "go-bottom"},
{"set_on", "gtk-yes"},
{"set_off", "gtk-no"},
};
auto iter = action_icon_map.find(action.task);
if (iter != action_icon_map.end())
return iter->second;

auto iter2 = known_icon_list.find(action.task);
if (iter2 != known_icon_list.end())
return iter2->second.first;
return "image-missing";
}

std::string
Expand All @@ -492,3 +494,14 @@ studio::get_tree_pixbuf_layer(const synfig::String &layer)
return icon;
}


std::string
studio::state_icon_name(const synfig::String& state)
{
auto iter = known_icon_list.find(state);
if (iter == known_icon_list.end()) {
synfig::warning(_("state icon name not defined: %s"), state.c_str());
return "image-missing";
}
return iter->second.first;
}
3 changes: 2 additions & 1 deletion synfig-studio/src/gui/iconcontroller.h
Expand Up @@ -66,11 +66,12 @@ class IconController
std::string layer_icon_name(const synfig::String &layer);
Glib::RefPtr<Gdk::Pixbuf> get_tree_pixbuf_layer(const synfig::String &layer);

std::string state_icon_name(const synfig::String& state);
std::string value_icon_name(synfig::Type &type);
std::string interpolation_icon_name(synfig::Interpolation type);
std::string valuenode_icon_name(etl::handle<synfig::ValueNode> value_node);
Glib::RefPtr<Gdk::Pixbuf> get_tree_pixbuf(synfig::Type &type);
Gtk::StockID get_action_stock_id(const synfigapp::Action::BookEntry& action);
std::string get_action_icon_name(const synfigapp::Action::BookEntry& action);

}; // END of namespace studio

Expand Down
36 changes: 13 additions & 23 deletions synfig-studio/src/gui/instance.cpp
Expand Up @@ -95,6 +95,9 @@ int studio::Instance::instance_count_=0;
static Gtk::Image*
create_image_from_icon(const std::string& icon_name, Gtk::IconSize icon_size)
{
if (icon_name == "image-missing")
return new Gtk::Image();

#if GTK_CHECK_VERSION(3,24,0)
return new Gtk::Image(icon_name, icon_size);
#else
Expand Down Expand Up @@ -835,7 +838,7 @@ Instance::insert_canvas(Gtk::TreeRow row, synfig::Canvas::Handle canvas)
CanvasTreeModel canvas_tree_model;
assert(canvas);

row[canvas_tree_model.icon] = Gtk::Button().render_icon_pixbuf(Gtk::StockID("synfig-canvas"),Gtk::ICON_SIZE_SMALL_TOOLBAR);
row[canvas_tree_model.icon_name] = "canvas_icon";
row[canvas_tree_model.id] = canvas->get_id();
row[canvas_tree_model.name] = canvas->get_name();
if(canvas->is_root())
Expand Down Expand Up @@ -990,13 +993,13 @@ Instance::add_actions_to_group(const Glib::RefPtr<Gtk::ActionGroup>& action_grou

for(iter=candidate_list.begin();iter!=candidate_list.end();++iter)
{
Gtk::StockID stock_id(get_action_stock_id(*iter));
std::string icon_name(get_action_icon_name(*iter));

if(!(iter->category&synfigapp::Action::CATEGORY_HIDDEN))
{
action_group->add(Gtk::Action::create(
action_group->add(Gtk::Action::create_with_icon_name(
"action-"+iter->name,
stock_id,
icon_name,
iter->local_name,iter->local_name
),
sigc::bind(
Expand Down Expand Up @@ -1047,8 +1050,9 @@ Instance::add_actions_to_menu(Gtk::Menu *menu, const synfigapp::Action::ParamLis
continue;

Gtk::MenuItem *item = Gtk::manage(new Gtk::ImageMenuItem(
*Gtk::manage(new Gtk::Image(get_action_stock_id(*iter),Gtk::ICON_SIZE_MENU)),
*Gtk::manage(create_image_from_icon(get_action_icon_name(*iter), Gtk::ICON_SIZE_MENU)),
iter->local_name ));

item->signal_activate().connect(
sigc::bind(
sigc::bind(
Expand Down Expand Up @@ -1094,7 +1098,7 @@ Instance::add_actions_to_menu(Gtk::Menu *menu, const synfigapp::Action::ParamLis
if(!(iter->category&synfigapp::Action::CATEGORY_HIDDEN))
{
Gtk::MenuItem *item = Gtk::manage(new Gtk::ImageMenuItem(
*Gtk::manage(new Gtk::Image(get_action_stock_id(*iter),Gtk::ICON_SIZE_MENU)),
*Gtk::manage(create_image_from_icon(get_action_icon_name(*iter), Gtk::ICON_SIZE_MENU)),
iter->local_name ));
item->signal_activate().connect(
sigc::bind(
Expand All @@ -1114,7 +1118,7 @@ Instance::add_actions_to_menu(Gtk::Menu *menu, const synfigapp::Action::ParamLis
if(!(iter->category&synfigapp::Action::CATEGORY_HIDDEN))
{
Gtk::MenuItem *item = Gtk::manage(new Gtk::ImageMenuItem(
*Gtk::manage(new Gtk::Image(get_action_stock_id(*iter),Gtk::ICON_SIZE_MENU)),
*Gtk::manage(create_image_from_icon(get_action_icon_name(*iter), Gtk::ICON_SIZE_MENU)),
iter->local_name ));
item->signal_activate().connect(
sigc::bind(
Expand Down Expand Up @@ -1294,9 +1298,7 @@ Instance::make_param_menu(Gtk::Menu *menu,synfig::Canvas::Handle canvas, synfiga
}

item = Gtk::manage(new Gtk::ImageMenuItem(
*manage(new Gtk::Image(
Gtk::StockID("gtk-convert"),
Gtk::ICON_SIZE_MENU )),
*Gtk::manage(create_image_from_icon("gtk-convert", Gtk::ICON_SIZE_MENU )),
_("Convert") ));
item->set_submenu(*convert_menu);
item->show();
Expand Down Expand Up @@ -1330,22 +1332,10 @@ Instance::make_param_menu(Gtk::Menu *menu,synfig::Canvas::Handle canvas, synfiga
param_interpolation_menu->append(*item);
param_list.erase("new_value");

Gtk::Image *image;

#if GTK_CHECK_VERSION(3,24,0)
#define CREATE_IMAGE(ImageVar, IconName, IconSize) \
ImageVar = manage(new Gtk::Image(IconName, IconSize));
#else
#define CREATE_IMAGE(ImageVar, IconName, IconSize) \
ImageVar = manage(new Gtk::Image()); \
ImageVar->set_from_icon_name(IconName, IconSize);
#endif

#define ADD_IMAGE_MENU_ITEM(Interpolation, IconName, Text) \
param_list.add("new_value", Interpolation); \
CREATE_IMAGE(image, IconName, Gtk::IconSize::from_name("synfig-small_icon")); \
item = Gtk::manage(new Gtk::ImageMenuItem( \
*image, \
*Gtk::manage(create_image_from_icon(IconName, Gtk::IconSize::from_name("synfig-small_icon"))), \
_(Text) )); \
item->signal_activate().connect( \
sigc::bind( \
Expand Down
4 changes: 2 additions & 2 deletions synfig-studio/src/gui/instance.h
Expand Up @@ -70,7 +70,7 @@ class Instance : public synfigapp::Instance
class CanvasTreeModel : public Gtk::TreeModel::ColumnRecord
{
public:
Gtk::TreeModelColumn<Glib::RefPtr<Gdk::Pixbuf> > icon;
Gtk::TreeModelColumn<Glib::ustring> icon_name;
Gtk::TreeModelColumn<Glib::ustring> label;
Gtk::TreeModelColumn<Glib::ustring> name;
Gtk::TreeModelColumn<Glib::ustring> id;
Expand All @@ -94,7 +94,7 @@ class Instance : public synfigapp::Instance
add(value);
add(name);
add(label);
add(icon);
add(icon_name);
add(type);
add(id);
add(canvas);
Expand Down