Add List for folder

This commit is contained in:
daleclack 2022-01-29 21:21:07 +08:00
parent ccde4afeec
commit 9dbe2955f1
7 changed files with 161 additions and 38 deletions

View File

@ -0,0 +1,35 @@
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="linearGradient1769" x1="445.28" x2="445.28" y1="179.28" y2="200.07" gradientTransform="matrix(.38956 0 0 .38184 -165.52 -63.44)" gradientUnits="userSpaceOnUse">
<stop stop-color="#60c0f0" offset="0"/>
<stop stop-color="#83d4fb" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient860" x1="8.4667" x2="8.4667" y1="293.3" y2="292.77" gradientTransform="translate(0,-280.07)" gradientUnits="userSpaceOnUse">
<stop stop-color="#008ea2" stop-opacity=".25" offset="0"/>
<stop stop-color="#fff" stop-opacity=".15" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient868" x1="8.4667" x2="8.4667" y1="294.62" y2="293.56" gradientTransform="matrix(.99998 0 0 .99998 0 -280.06)" gradientUnits="userSpaceOnUse">
<stop stop-color="#008ea2" stop-opacity=".25098" offset="0"/>
<stop stop-color="#008ea2" stop-opacity=".15" offset=".75678"/>
<stop stop-color="#fff" stop-opacity=".15" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient897" x1="6.8792" x2="6.8792" y1="285.36" y2="283.77" gradientTransform="matrix(.99998 0 0 .99998 0 -280.06)" gradientUnits="userSpaceOnUse">
<stop offset="0"/>
<stop stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient907" x1="1.0583" x2="15.875" y1="289.59" y2="289.59" gradientTransform="translate(0,-280.07)" gradientUnits="userSpaceOnUse">
<stop stop-color="#46a2d7" stop-opacity=".5" offset="0"/>
<stop stop-color="#46a2d7" stop-opacity="0" offset=".10783"/>
<stop stop-color="#46a2d7" stop-opacity=".095808" offset=".89398"/>
<stop stop-color="#46a2d7" stop-opacity=".5" offset="1"/>
</linearGradient>
</defs>
<image x=".52916" y="1.969" width="15.875" height="13.229" image-rendering="optimizeQuality" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAyCAYAAAAA9rgCAAAACXBIWXMAAA7XAAAO1wFxhj+8AAAA GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAbVJREFUaIHtml9TglAQRw9/jMrR 6a3v//2q0azMFOhhuXJLRgHv5G3dM8PgqHA57C68/BIOSbxtCLW3RUvy63MOFMAESOkvXQMlsAW+ gB2RiifevgDmwANwB2QDz7UD1sASWAEboApzmeHIaSs7Bx6Bmff9EGpgCtwjN2+B3ICSiKqdN/sC qewMaeehsjTH3CCd4UbjBXhHWv0S0gdrukpOkDYeU1kf1y3T5pwF0uJviHTVdREd5+izzilqZMxK vNFyglmznSPrkyKyGdLia2Sm+1T61BsiPXGsYwd8Ijd7TXOzc++PoWT9xSe07V0RpsJD3hwbpMOe kNEq86OHhMG1+SVm2D1TSuR1Wf2FsCN0B/Vd8xZ5GC+Ar2PzoIWMdrSSaxAG7xllwtoxYe2YsHZM WDsmrB0T1o4Ja8eEtWPC2jFh7ZiwdkxYOyasHRPWjglr52qFo48MnsneL6WNDfYJnPxHasStBGon vEWiPdFmJEfislofNJEpl82q+RkzukQAJTROdgU8I3mtKvd+WNJmm8aES2OjRLp2AbzSdG+o+HBs uLndIgXcj2qX0NiAeGx0Bta/AZSga/2YDpsuAAAAAElFTkSuQmCC "/>
<path d="m2.21 2.38h2.695c0.75074 0 0.78302 0.0285 1.5421 0.62962 0.78159 0.5904 0.94779 0.607 1.8636 0.607l6.4126-0.0524c0.638-5e-3 1.1517 0.51363 1.1517 1.1516v6.77c0 0.63802-0.51364 1.1517-1.1517 1.1517h-12.513c-0.63802 0-1.1517-0.51364-1.1517-1.1517v-7.9542c0-0.63802 0.51364-1.1517 1.1517-1.1517z" fill="#46a2d7"/>
<path d="m2.2102 2.3812c-0.63801 0-1.1518 0.51384-1.1518 1.1518v2.8167h14.816v-1.633c0-0.63801-0.51387-1.1563-1.1518-1.1513l-6.4124 0.052194c-0.91582 0-1.0818-0.016798-1.8634-0.60718-0.75908-0.6011-0.79128-0.62941-1.542-0.62941h-2.695z" fill="url(#linearGradient897)" opacity=".35" stroke-width=".26458"/>
<rect x="1.0583" y="4.49" width="14.817" height="10.054" rx="1.1517" ry="1.1288" fill="url(#linearGradient1769)"/>
<rect x="1.0583" y="12.7" width="14.817" height=".52915" fill="url(#linearGradient860)"/>
<path d="m1.0655 13.494c0.03752 0.59168 0.5312 1.0583 1.1446 1.0583h12.513c0.6134 0 1.1071-0.46664 1.1446-1.0583h-14.802z" fill="url(#linearGradient868)" stroke-width=".26458"/>
<rect x="1.0583" y="4.49" width="14.817" height="10.054" rx="1.1517" ry="1.1288" fill="url(#linearGradient907)"/>
<path d="m2.2102 4.4979c-0.63801 0-1.1518 0.50323-1.1518 1.1286v0.23512c0-0.6089 0.51384-1.0991 1.1518-1.0991h12.513c0.63801 0 1.1518 0.49024 1.1518 1.0991v-0.23512c0-0.62536-0.51384-1.1286-1.1518-1.1286z" fill="#fff" opacity=".1" stroke-width=".26458"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#363636;
}
</style>
</defs>
<path style="fill:currentColor;fill-opacity:1;stroke:none"
d="M 7 3.0058594 L 7 8 L 2 8 L 2 8.9980469 L 7 8.9980469 L 7 14.007812 L 8 14.007812 L 8 8.9980469 L 13 8.9980469 L 13 8 L 8 8 L 8 3.0058594 L 7 3.0058594 z "
class="ColorScheme-Text"
/>
</svg>

After

Width:  |  Height:  |  Size: 490 B

View File

@ -0,0 +1,8 @@
<svg version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<defs>
<style id="current-color-scheme" type="text/css">.ColorScheme-Text {
color:#363636;
}</style>
</defs>
<path class="ColorScheme-Text" d="m3 8v1h10v-1z" fill="currentColor"/>
</svg>

After

Width:  |  Height:  |  Size: 281 B

View File

@ -22,19 +22,21 @@ link_directories (${GTKMM3_LIBRARY_DIRS})
#Compile Resource
#set(RESOURCE_LIST
#stack.ui)
set(RESOURCE_LIST
icons/16x16/actions/list-add.svg
icons/16x16/actions/list-remove.svg
folder.svg)
#compile_gresources(RESOURCE_FILE
#XML_OUT
#TYPE EMBED_C
#RESOURCES ${RESOURCE_LIST}
#PREFIX "/org/gtk/daleclack"
#SOURCE_DIR ${PROJECT_SOURCE_DIR}/res)
compile_gresources(RESOURCE_FILE
XML_OUT
TYPE EMBED_C
RESOURCES ${RESOURCE_LIST}
PREFIX "/org/gtk/daleclack"
SOURCE_DIR ${PROJECT_SOURCE_DIR}/../default_res)
# Add a custom target to the makefile. Now make builds our resource file.
# It depends on the output RESOURCE_FILE.
#add_custom_target(resource ALL DEPENDS ${RESOURCE_FILE})
add_custom_target(resource ALL DEPENDS ${RESOURCE_FILE})
#For win32 platform,use rc resource and .ico icon
if(WIN32)
@ -43,9 +45,9 @@ if(WIN32)
set_property(SOURCE ../icon.rc APPEND PROPERTY
OBJECT_DEPENDS ${PROJECT_SOURCE_DIR}/../icon.ico
)
add_executable(${PROJECT_NAME} WIN32 ${app_WINRC} src/main.cc src/MyWin.cc src/MyPrefs.cc)
add_executable(${PROJECT_NAME} WIN32 ${app_WINRC} src/main.cc src/MyWin.cc src/MyPrefs.cc ${RESOURCE_FILE})
else()
add_executable(${PROJECT_NAME} src/main.cc src/MyWin.cc src/MyPrefs.cc)
add_executable(${PROJECT_NAME} src/main.cc src/MyWin.cc src/MyPrefs.cc ${RESOURCE_FILE})
endif(WIN32)

View File

@ -15,11 +15,23 @@ btnbox(Gtk::ORIENTATION_HORIZONTAL,5)
images_store = Gtk::ListStore::create(n_columns);
images_view.set_model(images_store);
// Load Pixbufs
auto pixbuf = Gdk::Pixbuf::create_from_resource("/org/gtk/daleclack/folder.svg");
folder_pixbuf = pixbuf->scale_simple(24,24,Gdk::INTERP_BILINEAR);
// Add Default Value for folders view
auto row = *(folders_store->append());
row[n_columns.m_col_name] = Glib::get_home_dir();
row[n_columns.m_col_path] = Glib::get_home_dir();
row[n_columns.m_col_name] = "User's Home";
row[n_columns.m_col_pixbuf] = folder_pixbuf;
folders_view.append_column(" ",n_columns.m_col_pixbuf);
folders_view.append_column("Folders", n_columns.m_col_name);
row = *(folders_store->append());
row[n_columns.m_col_path] = Glib::get_user_special_dir(Glib::USER_DIRECTORY_PICTURES);
row[n_columns.m_col_name] = "User's Pictures Directory";
row[n_columns.m_col_pixbuf] = folder_pixbuf;
// Default Value for imags view
row = *(images_store->append());
row[n_columns.m_col_name] = "Test";
@ -33,6 +45,11 @@ btnbox(Gtk::ORIENTATION_HORIZONTAL,5)
views_box.pack_start(sw_images);
// Add Control Buttons
btnadd.set_image_from_icon_name("list-add");
btnadd.signal_clicked().connect(sigc::mem_fun(*this, &MyPrefs::btnadd_clicked));
btnremove.set_image_from_icon_name("list-remove");
btnbox.pack_start(btnadd, Gtk::PACK_SHRINK);
btnbox.pack_start(btnremove, Gtk::PACK_SHRINK);
main_box.pack_start(btnbox, Gtk::PACK_SHRINK);
// Add Main Box to window
@ -45,6 +62,40 @@ btnbox(Gtk::ORIENTATION_HORIZONTAL,5)
show_all_children();
}
void MyPrefs::set_background(Gtk::Image *back){
void MyPrefs::btnadd_clicked()
{
// Create a dialog
dialog = Gtk::FileChooserNative::create("Add a folder", *this,
Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER, "OK", "Cancel");
dialog->signal_response().connect(sigc::mem_fun(*this, &MyPrefs::dialog_response));
dialog->show();
}
void MyPrefs::dialog_response(int response_id)
{
if (response_id == Gtk::RESPONSE_ACCEPT)
{
// Get File Basename and Path
auto file = dialog->get_file();
auto basename = file->get_basename();
auto filename = file->get_path();
// Add to list
auto row = *(folders_store->append());
row[n_columns.m_col_path] = filename;
row[n_columns.m_col_name] = basename;
row[n_columns.m_col_pixbuf] = folder_pixbuf;
file.reset();
}
dialog.reset();
}
void MyPrefs::btnremove_clicked() {}
void MyPrefs::set_background(Gtk::Image *back)
{
background1 = back;
}

View File

@ -14,8 +14,12 @@ protected:
public:
ModelColumns()
{
add(m_col_pixbuf);
add(m_col_path);
add(m_col_name);
}
Gtk::TreeModelColumn<Glib::RefPtr<Gdk::Pixbuf>> m_col_pixbuf;
Gtk::TreeModelColumn<std::string> m_col_path;
Gtk::TreeModelColumn<Glib::ustring> m_col_name;
};
@ -31,4 +35,13 @@ private:
Gtk::ScrolledWindow sw_folders, sw_images;
Gtk::Box main_box, views_box, btnbox;
Gtk::Button btnadd, btnremove;
//Folder Open Dialog
Glib::RefPtr<Gdk::Pixbuf> folder_pixbuf;
Glib::RefPtr<Gtk::FileChooserNative> dialog;
void dialog_response(int response_id);
//Signal Handlers
void btnadd_clicked();
void btnremove_clicked();
};

View File

@ -33,6 +33,7 @@ MyWin::MyWin()
show_all_children();
}
void MyWin::btnback_clicked(){
void MyWin::btnback_clicked()
{
prefs_win.show_all();
}