Skip to content

Commit

Permalink
fix(gnome): No ellipses on Video Format combobox (#1050)
Browse files Browse the repository at this point in the history
* fix(gnome): No ellipses on Video Format combobox

* feat(gnome): Improve no ellipses implementation

---------

Co-authored-by: Nick Logozzo <[email protected]>
  • Loading branch information
largestgithubuseronearth and nlogozzo authored Jan 27, 2025
1 parent 3e8899f commit 2d60e3d
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 8 deletions.
2 changes: 1 addition & 1 deletion org.nickvision.tubeconverter.gnome/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -80,4 +80,4 @@ if(NOT WIN32)
else()
message(WARNING "update-desktop-database not found, desktop database will not be updated")
endif()
endif()
endif()
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ namespace Nickvision::TubeConverter::GNOME::Helpers::GtkHelpers
* @param row The combo row
* @param strs The strings to set
* @param selected An option string that should be selected
* @param allowEllipse Whether or not to allow ellipses in the combo row
*/
void setComboRowModel(AdwComboRow* row, const std::vector<std::string>& strs, const std::string& selected = "");
void setComboRowModel(AdwComboRow* row, const std::vector<std::string>& strs, const std::string& selected = "", bool allowEllipse = true);
}

#endif //GTKHELPERS_H
#endif //GTKHELPERS_H
23 changes: 20 additions & 3 deletions org.nickvision.tubeconverter.gnome/src/helpers/gtkhelpers.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#include "helpers/gtkhelpers.h"
#include <adwaita.h>

namespace Nickvision::TubeConverter::GNOME::Helpers
{
Expand Down Expand Up @@ -48,7 +47,7 @@ namespace Nickvision::TubeConverter::GNOME::Helpers
gtk_application_set_accels_for_action(app, action, accels);
}

void GtkHelpers::setComboRowModel(AdwComboRow* row, const std::vector<std::string>& strs, const std::string& selected)
void GtkHelpers::setComboRowModel(AdwComboRow* row, const std::vector<std::string>& strs, const std::string& selected, bool allowEllipse)
{
size_t selectedIndex{ 0 };
GtkStringList* list{ gtk_string_list_new(nullptr) };
Expand All @@ -61,7 +60,25 @@ namespace Nickvision::TubeConverter::GNOME::Helpers
selectedIndex = i;
}
}
if(!allowEllipse)
{
GtkListItemFactory* factory{ gtk_signal_list_item_factory_new() };
g_signal_connect(factory, "setup", G_CALLBACK(+[](GtkListItemFactory* factory, GtkListItem* item, gpointer data)
{
GtkLabel* lbl{ GTK_LABEL(gtk_label_new(nullptr)) };
gtk_widget_set_halign(GTK_WIDGET(lbl), GTK_ALIGN_START);
gtk_label_set_ellipsize(lbl, PANGO_ELLIPSIZE_NONE);
gtk_list_item_set_child(item, GTK_WIDGET(lbl));
}), nullptr);
g_signal_connect(factory, "bind", G_CALLBACK(+[](GtkListItemFactory* factory, GtkListItem* item, gpointer data)
{
GtkStringList* list{ GTK_STRING_LIST(data) };
GtkLabel* lbl{ GTK_LABEL(gtk_list_item_get_child(item)) };
gtk_label_set_label(lbl, gtk_string_list_get_string(list, gtk_list_item_get_position(item)));
}), list);
adw_combo_row_set_factory(row, factory);
}
adw_combo_row_set_model(row, G_LIST_MODEL(list));
adw_combo_row_set_selected(row, selectedIndex);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,9 @@ namespace Nickvision::TubeConverter::GNOME::Views
adw_view_stack_set_visible_child_name(m_builder.get<AdwViewStack>("viewStack"), "download-single");
GtkHelpers::setComboRowModel(m_builder.get<AdwComboRow>("fileTypeSingleRow"), m_controller->getFileTypeStrings());
adw_combo_row_set_selected(m_builder.get<AdwComboRow>("fileTypeSingleRow"), static_cast<unsigned int>(m_controller->getPreviousDownloadOptions().getFileType()));
GtkHelpers::setComboRowModel(m_builder.get<AdwComboRow>("videoFormatSingleRow"), m_controller->getVideoFormatStrings(&previous));
GtkHelpers::setComboRowModel(m_builder.get<AdwComboRow>("videoFormatSingleRow"), m_controller->getVideoFormatStrings(&previous), "", false);
adw_combo_row_set_selected(m_builder.get<AdwComboRow>("videoFormatSingleRow"), previous);
GtkHelpers::setComboRowModel(m_builder.get<AdwComboRow>("audioFormatSingleRow"), m_controller->getAudioFormatStrings(&previous));
GtkHelpers::setComboRowModel(m_builder.get<AdwComboRow>("audioFormatSingleRow"), m_controller->getAudioFormatStrings(&previous), "", false);
adw_combo_row_set_selected(m_builder.get<AdwComboRow>("audioFormatSingleRow"), previous);
adw_action_row_set_subtitle(m_builder.get<AdwActionRow>("saveFolderSingleRow"), m_controller->getPreviousDownloadOptions().getSaveFolder().string().c_str());
gtk_editable_set_text(m_builder.get<GtkEditable>("filenameSingleRow"), m_controller->getMediaTitle(0).c_str());
Expand Down

0 comments on commit 2d60e3d

Please sign in to comment.