انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: ایجاد دکمه ی "undo redo" با gtk3 به زبان c  (دفعات بازدید: 2075 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین Bloordokani3412

  • Newbie
  • *
  • ارسال: 17
  • جنسیت : پسر
ایجاد دکمه ی "undo redo" با gtk3 به زبان c
« : 24 مهر 1395، 12:50 ق‌ظ »
سلام دوستان

در تلاشم که یک دکمه ی "undo redo" با gtk3  به زبان c ایجاد کنم. مثلا فرض کنیم یک تصور اندازه شو تغییر دادیم می خوایم به کمک دکمه ی "undo redo"به وضعیت قبلی برگردیم. می تون دکمه هاشو درست کنم ولی اون قسمت اصلی که باید به ماشین حالی کنم که مثلا اگه روی دکمه فشار دادم یه دونه به وضعیت قبلیت برگرده رو نمی تون کدشو بنویسم!!! ولی چون من تو این زمینه تازه کارم نمی تونم کدشو بنویسم. اگه کسی تو این زمینه کد یا منبع خوبی رو داره برام معرفی کنه.

ممنون
« آخرین ویرایش: 24 مهر 1395، 12:53 ق‌ظ توسط Bloordokani3412 »

آفلاین B

  • Sr. Member
  • *
  • ارسال: 354
  • جنسیت : پسر
پاسخ : ایجاد دکمه ی "undo redo" با gtk3 به زبان c
« پاسخ #1 : 24 مهر 1395، 11:03 ق‌ظ »
خب این چیزی که نیست که بصورت کلی باشه و بشه راه حل کلی واسش داد؛ به زبان و کتابخونه‌ّایی هم که استفاده میکنی ربطی نداره

باید قبل از انجام هرکاری یه نسخه از وضعیت پروژه رو بافر کنی؛ و با هر بار آندو آخرین وضعیت رو نشنون کاربر بدی..

فکر هم نمیکنم چیزی واسه اینکا وجود داشته باشه؛ چون ماهیت هر پروژه با هم متفاوت هستش

آفلاین Bloordokani3412

  • Newbie
  • *
  • ارسال: 17
  • جنسیت : پسر
پاسخ : ایجاد دکمه ی "undo redo" با gtk3 به زبان c
« پاسخ #2 : 25 مهر 1395، 02:45 ب‌ظ »
یه چیزی مثل نرم افزار پینت می خوام درست کنم. مثلا یه تصویری رو که فراخوانی کردیم سایزشو تغییر بدیم  و بعد از تغییر سایزش به کمک دکمه های آندو-ردو دوباره اونو به حالت قبلیش برگردونیم.

 ولی چون من تازه کار هستم نمی تونم کدشو با جی تی کا و به زبان سی بنویسم.

من یه کدی رو شروع کردم که بنویسم ولی تا حالا موفق نشدم.

 img1buffer تصویر اصلی است و img1buffer_resized تصویر بعد از تغییر سایزش است. حالا من می خوام با کمک دکمه ی آندو-ردو بین این دو تصویر جابه جایی بذارم:

void undo(GtkWidget *widget, gpointer data)
{
GdkPixbuf *img1buffer = NULL;
GdkPixbuf *img1buffer_resized = NULL;

if (img1buffer = NULL) {
    gdk_pixbuf_save(img1buffer, "Raw X-Ray Image.png", "png", NULL, NULL);
    return;
}

else if (img1buffer_resized = NULL) {

    GdkPixbuf *img1buffer_resized = gdk_pixbuf_scale_simple(img1buffer, width, height, GDK_INTERP_NEAREST);
    gdk_pixbuf_save(img1buffer_resized, "Raw X-Ray Image.png", "png", NULL, NULL);

    return;
}

}

آفلاین alireza.crs

  • Sr. Member
  • *
  • ارسال: 491
  • جنسیت : پسر
پاسخ : ایجاد دکمه ی "undo redo" با gtk3 به زبان c
« پاسخ #3 : 26 مهر 1395، 11:46 ق‌ظ »
یه چیزی بگین که مشکل تون چیه که نمیتونین کامپایل کنین
چه اروری دریافت میکنین چی میشه که نمیتونین بنویسیدش.متاسفانه اعضای انجمن علم غیب ندارند
چگونه هوشمندانه بپرسیم
یه مشکلی که دیدم اینه که توی if باید به جای = از == یا === استفاده کنین
درضمن شما که دوخط بالاتر NULL میکنین چرا بعدش شرط گذاشتین که اگه NULL بود؟ ;D

void undo(GtkWidget *widget, gpointer data)
{
GdkPixbuf *img1buffer = NULL;
GdkPixbuf *img1buffer_resized = NULL;

if (img1buffer == NULL) {
    gdk_pixbuf_save(img1buffer, "Raw X-Ray Image.png", "png", NULL, NULL);
    return;
}

else if (img1buffer_resized == NULL) {

    GdkPixbuf *img1buffer_resized = gdk_pixbuf_scale_simple(img1buffer, width, height, GDK_INTERP_NEAREST);
    gdk_pixbuf_save(img1buffer_resized, "Raw X-Ray Image.png", "png", NULL, NULL);

    return;
}

}
« آخرین ویرایش: 26 مهر 1395، 11:57 ق‌ظ توسط alireza.crs »

آفلاین Mmjafari

  • High Sr. Member
  • *
  • ارسال: 556
  • جنسیت : پسر
  • لیلی نام دیگر آزادی ست
    • صفحه من تو گیت
پاسخ : ایجاد دکمه ی "undo redo" با gtk3 به زبان c
« پاسخ #4 : 26 مهر 1395، 04:17 ب‌ظ »
اگه مقدار یا رشته کار می کنی، تو یه فایل تکست ذخیره کنش. هر بار هم فایل رو خالی کن که قاطی نشه. مث این البته برا بش:
#!/bin/bash
rm log.txt
read txt
$txt >log.txt
حالا دفعه بعد ببینه چی زده
cat log.txtحالا میشه یک نرم افزار، با حافظه کش.
« آخرین ویرایش: 26 مهر 1395، 04:22 ب‌ظ توسط Mmjafari »

آفلاین Mmjafari

  • High Sr. Member
  • *
  • ارسال: 556
  • جنسیت : پسر
  • لیلی نام دیگر آزادی ست
    • صفحه من تو گیت
پاسخ : ایجاد دکمه ی "undo redo" با gtk3 به زبان c
« پاسخ #5 : 26 مهر 1395، 04:41 ب‌ظ »
کد کامل
#!/bin/bash
echo enter image name and address
read $img
Cash=$( identify -format '%wx%h' $img)
$Cash >log.txt
echo enter x value
read xvalue
echo enter y value
read yvalue
convert  -resize  $xvalueX$yvalue $img dest.jpg
بسته imagemagic باید نصب باشه

آفلاین Mmjafari

  • High Sr. Member
  • *
  • ارسال: 556
  • جنسیت : پسر
  • لیلی نام دیگر آزادی ست
    • صفحه من تو گیت
پاسخ : ایجاد دکمه ی "undo redo" با gtk3 به زبان c
« پاسخ #6 : 26 مهر 1395، 04:59 ب‌ظ »
ببخشید خرابه ](*,) ](*,)

آفلاین Bloordokani3412

  • Newbie
  • *
  • ارسال: 17
  • جنسیت : پسر
پاسخ : ایجاد دکمه ی "undo redo" با gtk3 به زبان c
« پاسخ #7 : 01 آبان 1395، 09:58 ق‌ظ »
@Mmjafari: ممنون از راهنماییت. ولی من تو توضیحاتم در بالا گفتم که یه چیزی مثل نرم افزار پینت هستش. من وقتی یک عکس رو فراخوانی میکنم و سایزشو کم یا زیاد می کنم با دکمه آندو-ردو بتون حالت رفت و برگشت رو ایجاد کنم.

 img1buffer تصویر اصلی است و img1buffer_resized تصویر بعد از تغییر سایزش است.
 توضیحات بالا رو ببینید.

لازمه که کد مربوط به تغییر سایز رو هم بذارم؟؟؟
« آخرین ویرایش: 01 آبان 1395، 10:02 ق‌ظ توسط Bloordokani3412 »